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

Sharmarke Aden commented on AVRO-1188:
--------------------------------------

Updated the patch based on Tom's valuable feedback. Please note that I also 
changed the plugin coUpdated the patch based on Tom's feedback. Please note 
that I also changed the plugin "importedFiles" configuration to just "imports"
                
> External Schema Imports via AVSC Schema
> ---------------------------------------
>
>                 Key: AVRO-1188
>                 URL: https://issues.apache.org/jira/browse/AVRO-1188
>             Project: Avro
>          Issue Type: New Feature
>          Components: java
>            Reporter: Sharmarke Aden
>            Assignee: Sharmarke Aden
>         Attachments: Avro-1188.tar.gz, vcs-diff1160361655737792386.patch, 
> vcs-diff2916139350460140957.patch, vcs-diff4277815358664835838.patch, 
> vcs-diff6739872835137179667.patch
>
>
> There is no way for ".avsc" schema files to import types (i.e records, enums, 
> etc) in external schema files. There's tremendous benefit in being able to do 
> this as it would allow the sharing of common types between multiple schema 
> files. Here's a use case that illustrates the typical usecase of this feature 
> request.
> Suppose we have an enum called "Privacy" that we would like to share between 
> multiple schemas:
> {code}
> //privacy.avsc
> { 
>   "type": "enum",
>   "name": "Privacy",
>   "symbols" : ["Public", "Private"]
> }
> {code}
> Now, if this feature was implemented one could import the above type into 
> other schema files by doing something like this: 
> {code}
> //the post.avsc 
> {
>   "type": "record", 
>   "name": "Post",
>   "imports": ["privacy.avsc"] //you can import one or more schemas
>   "fields": [{
>               "name": "privacy", 
>               "type": [ "null", "Privacy"], //use imported Privacy type
>               "default": "Private"
>             }
>   ]
> }
> {code}
> Here's another schema file that also has a similar privacy concern:
> {code}
> //the event.avsc is another schema that also imports the privacy type
> {
>   "type": "record", 
>   "name": "Event",
>   "imports": ["privacy.avsc"] //it also imports the privacy schemas
>   "fields": [{
>               "name": "privacy", 
>               "type": [ "null", "Privacy"], //use imported Privacy type
>               "default": "Public"
>             }
>   ]
> }
> {code}
> IDL files are able to import external schemas and protocols and it would be 
> very beneficial if schema files could import other schema files. 

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to