[
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