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

Keh-Li Sheng commented on AVRO-1026:
------------------------------------

I forked from github and didn't update to the latest trunk before creating the 
patch. I'm resolving the merge now and will see if I can produce a clean patch.

I debated this a bit when implementing it and I chose in favor of keeping 
name/namespace/fullname as separate concepts since there were a lot of 
downstream effects to pushing namespaces into the name field - primarily in 
avrogencpp and gen-cppcode.py where name is used quite frequently as a field 
name or class/struct specifier (in which case the '.' in namespaces would be an 
invalid character). That meant additional logic would be required to strip the 
name of its fully qualified path, whereas it is more straightforward to know 
how to compose the full path when needed.

Additionally, if there was a future desire to "nest" declarations within C++ 
namespaces that tracked the schema namespace, having a separate namespace 
attribute would make that easier as well.

I'm not quite sure I understand what you mean by "backward compatibility" since 
this change does not *require* namespace attributes from existing schemas (all 
the existing schemas in jsonschemas seem to parse and validate and tests run 
the same as before), it merely knows what to do with them when it encounters 
them.
                
> Add namespace support to C++
> ----------------------------
>
>                 Key: AVRO-1026
>                 URL: https://issues.apache.org/jira/browse/AVRO-1026
>             Project: Avro
>          Issue Type: Improvement
>          Components: c++
>    Affects Versions: 1.6.1
>            Reporter: Keh-Li Sheng
>              Labels: patch
>         Attachments: AVRO-1026.patch, AVRO-1026_json.patch
>
>
> This patch adds support for reading and resolving schemas that use namespaces 
> for named types. Looking for a code review and application of the patch to 
> codebase.
> Node is modified to take an additional NamespaceConcept attribute in the 
> template parameters. An additional stack has been added to the compiler 
> context to track when namespaces have been entered or left for resolving 
> further types/symbols. Symbolic resolution is now done against the "fullname" 
> of the type and not just by the name. Some string gymnastics were needed in 
> other areas of codegen in order to handle the new symbols.
> Added very trivial tests to AvrogencppTests for schema generation by 
> avrogencpp and added a test schema (tweet) that has namespaces, a record 
> definition inside a namespace, and then a later symbolic reference by name 
> within an outer namespace. Also patched to work with gen-cppcode.py output. 
> Note that NodeImpl::printBasicInfo intentionally does not output the 
> namespace since that caused downstream breakage of gen-cppcode.py expected 
> format.
> github project was forked at https://github.com/bifflabs/avro

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to