avro-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Doug Cutting <cutt...@apache.org>
Subject Re: Unable to compile a namespace-less schema
Date Fri, 11 Oct 2013 21:43:24 GMT
Thanks for the complete example.  I can get this to compile by
removing the "package com.company" from Main.java.

The Java specification says, "It is a compile time error to import a
type from the unnamed package."  So you'll only be able to use these
classes from other classes in the unnamed package, which isn't very
useful.

You can add a namespace to your .avsc file, and alias it to the
non-namespaced version so that it still matches, e,g:

  ..., "name":"com.company.TUPLE_20", "alias":".TUPLE_20", ...

That gets things to compile for me without removing the package in
your Main.java.

Doug

On Fri, Oct 11, 2013 at 1:59 PM, Vitaly Gordon <vitalip@gmail.com> wrote:
> Hi Doug,
> I've attached a maven project that contains code that shows the problem.
> The code is basically the same one from the Avro guide, but what is
> important to observe is that since the Main class has a package define, it
> cannot import the classes generated from the namespace-less schema.
>
> just run mvn:compile to get the compilation errors
>
> Thanks,
> Vitaly
>
>
> On Thu, Oct 10, 2013 at 1:58 PM, Doug Cutting <cutting@apache.org> wrote:
>>
>> I encourage you to please provide a complete test, code that fails.
>> If maven is involved, create a simple, Maven project that illustrates
>> the problem.
>>
>> Thanks,
>>
>> Doug
>>
>> On Wed, Oct 9, 2013 at 11:21 PM, Vitaly Gordon <vitalip@gmail.com> wrote:
>> > Hi Doug,
>> > You are right, the code does compile with javac. Apparently it is some
>> > maven
>> > error, where it doesn't like to compile package-less files.
>> >
>> > Having said that, I still have the issue of not being able to use these
>> > java
>> > files in my code, because there is no way to import them. One thing I
>> > tried
>> > that sometimes work is adding some arbitrary namespace to the avro
>> > schema.
>> > However, when I try to read records using the new (with namespace)
>> > schema, I
>> > get in return a generic record instead of a specific one. This behavior
>> > can
>> > be observed in the same file I attached by adding an arbitrary namespace
>> > to
>> > the schema before generating the Java classes from it.
>> >
>> > Is there any way to read specific records when the schema that was used
>> > to
>> > write them contains no namespace?
>> >
>> > Thanks,
>> > Vitaly
>> >
>> >
>> > On Wed, Oct 9, 2013 at 6:07 PM, Doug Cutting <cutting@apache.org> wrote:
>> >>
>> >> Using the current trunk of Avro I am able to:
>> >>  - extract the schema from the data file you provided (using
>> >> avro-tools schema command)
>> >>  - generate Java classes for this schema (using the avro-tools compile
>> >> command)
>> >>  - compile these generated Java classes (using the javac command)
>> >>
>> >> Can you provide a complete case of what fails for you?
>> >>
>> >> Thanks,
>> >>
>> >> Doug
>> >>
>> >> On Wed, Oct 9, 2013 at 4:56 PM, Vitaly Gordon <vitalip@gmail.com>
>> >> wrote:
>> >> > Does anyone else might have an idea how I can resolve this
>> >> > "namespace-less"
>> >> > Avro schema code generation?
>> >> >
>> >> > Thanks,
>> >> > Vitaly
>> >> >
>> >> >
>> >> > On Mon, Oct 7, 2013 at 2:04 PM, Vitaly Gordon <vitalip@gmail.com>
>> >> > wrote:
>> >> >>
>> >> >> Hi Sean,
>> >> >> Here is a file that contains a single record that I cannot read
>> >> >> using a
>> >> >> specific reader.
>> >> >>
>> >> >> It's hard for me to add code because the problem is a compilation
>> >> >> problem
>> >> >> with the generated Java files.
>> >> >>
>> >> >> So to recreate the problem:
>> >> >> 1. Extract the schema from the record
>> >> >> 2. Generate the code from the schema
>> >> >> 3. Compile
>> >> >>
>> >> >> Is there another way that I can describe the issue?
>> >> >>
>> >> >>
>> >> >>
>> >> >> On Mon, Oct 7, 2013 at 10:58 AM, Sean Busbey <busbey@cloudera.com>
>> >> >> wrote:
>> >> >>>
>> >> >>> Hi Vitay!
>> >> >>>
>> >> >>> Can you give us a minimal schema and test program that illustrates
>> >> >>> the
>> >> >>> problem you're describing?
>> >> >>>
>> >> >>> --
>> >> >>> Sean
>> >> >>>
>> >> >>> On Oct 7, 2013 12:27 PM, "Vitaly Gordon" <vitalip@gmail.com>
wrote:
>> >> >>>>
>> >> >>>> Hi All,
>> >> >>>> I am trying to read Avro data that its schema does not
have a
>> >> >>>> namespace.
>> >> >>>> The problem is that I cannot compile the classes, because
the
>> >> >>>> generated Java
>> >> >>>> code does not have a package. On the other hand, if I do
add some
>> >> >>>> arbitrary
>> >> >>>> namespace to the schema, the record is resolved as a generic
one,
>> >> >>>> which then
>> >> >>>> fails on ClassCastException to the specific record.
>> >> >>>>
>> >> >>>> Any ideas on how I can resolve this issue?
>> >> >>>>
>> >> >>>> Thanks,
>> >> >>>> Vitay
>> >> >>
>> >> >>
>> >> >
>> >
>> >
>
>

Mime
View raw message