[ 
https://issues.apache.org/jira/browse/AVRO-530?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12861844#action_12861844
 ] 

Scott Carey commented on AVRO-530:
----------------------------------

In the past, it has been suggested that simplifications like the above or 
shortcuts to make managing types across different schema/protocol files be 
handled at the genavro layer.  

If genavro evolves enough, all the user facing, ease of use stuff for managing 
schemas could go there, while the individual language implementations can all 
be as simple as possible and only use the JSON.

> allow for mutual recursion in type definitions
> ----------------------------------------------
>
>                 Key: AVRO-530
>                 URL: https://issues.apache.org/jira/browse/AVRO-530
>             Project: Avro
>          Issue Type: Improvement
>          Components: spec
>    Affects Versions: 1.3.2
>            Reporter: Jeff Hodges
>
> Suppose you have these two types in your protocol:
> {code}
> {"name": "User", "type": "record", "fields": [{"name": "current_status", 
> "type": "Status"}]}
> {"name": "Status", "type": "record", "fields": [{"name": "author", "type": 
> "User"}]}
> {code}
> This will raise an error! The current workaround is to define one of them at 
> their first usage. Like:
> {code}
> {"name": "User", "type": "record", "fields": [{"name": "current_status", 
> "type": {"name": "Status", "type": "record", "fields": [.. lots of fields 
> ...]}]}
> {code}
> But this is incredibly unwieldy. It would be really nice for the spec to 
> require all the parsers to allow for mutual recursion, instead. It could be 
> done by implementing a two-pass parser. One pass to acquire names referenced, 
> and a second to fill in those names with their appropriate references.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to