After browsing the (nice) API, it seems indeed trivial.
The Idl class allows to read/parse the related file.
http://avro.apache.org/docs/current/api/java/org/apache/avro/compiler/idl/Idl.html#Idl%28java.io.File%29
The Protocol object can then be requested from it.
http://avro.apache.org/docs/current/api/java/org/apache/avro/compiler/idl/Idl.html#ProtocolDeclaration%28%29
Of course, the types can then be requested from the Protocol itself.
http://avro.apache.org/docs/current/api/java/org/apache/avro/Protocol.html#getTypes%28%29
And then it is only a matter of serializing them. And actually the API
provides even a 'pretty' option.
http://avro.apache.org/docs/current/api/java/org/apache/avro/Schema.html#toString%28boolean%29
I will definitely look at it (ie with javac). Contributing it as a tool
would be nice. But I won't go into the maven land.
Regards
Bertrand
Post by Doug CuttingThere's not a tool that does this currently. Note however that
existing tools will generate Java classes for each type in an IDL
file, so if you're only using Java then you might not need a .avsc
file for each type in the IDL.
It would not be hard to add a tool (or an option to an existing tool)
that wrote a .avsc file for each type in an .avdl file. One could
also add Maven support for this. If this is of interest, please file
an issue in Jira.
https://issues.apache.org/jira/browse/AVRO
If you're willing and able, please provide an implementation.
Otherwise hopefully someone else will help out.
Cheers,
Doug
Post by Jeremy KahnThe "types" field in a protocol (.avro) may get you what you need. The
corresponding schema objects should be able to render to well-formed avsc
objects.
Post by Bertrand DechouxHi,
I have lots of avro schemas and most of them are about complex objects
(ie
Post by Jeremy KahnPost by Bertrand Dechouxnested definition of stuff). The syntax of avro idl is attractive in
order
Post by Jeremy KahnPost by Bertrand Dechouxto build something more readable and thus maintainable. However, it
looks
Post by Jeremy KahnPost by Bertrand Dechouxlike I can't generate any avsc from a avdl (or the avpr generated from
the
Post by Jeremy KahnPost by Bertrand Dechouxavdl). I understand what is a protocol and I don't need one but the idl
syntax is really attractive. Is there really no way to use it for that
purpose?
Regards
Bertrand
PS : I remember seeing a discussion about that subject but I can't find it.
--
Bertrand Dechoux