[
https://issues.apache.org/jira/browse/AVRO-648?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Doug Cutting updated AVRO-648:
------------------------------
Fix Version/s: 1.5.0
Marking this for 1.5.0 so we don't forget about it.
> Use a template library for the SpecificCompiler
> -----------------------------------------------
>
> Key: AVRO-648
> URL: https://issues.apache.org/jira/browse/AVRO-648
> Project: Avro
> Issue Type: Improvement
> Components: java
> Reporter: Philip Zeyliger
> Assignee: Philip Zeyliger
> Fix For: 1.5.0
>
> Attachments: AVRO-648.patch.txt
>
>
> This JIRA proposes uses a templating library instead of string concatenation
> for the SpecificCompiler.
> We've had conversations on the list about customizing the generated code (by
> adding getters and setters, adding utility classes for the arrays, adding
> String-friendly (as opposed to Utf8) accessors, etc.), but we've been stymied
> by the fact that the specific compiler is hard-coded to use one template, and
> it's hard to experiment with. Sam Pullara (at
> http://github.com/spullara/avrocompiler) has done pretty much this: he
> forked/subclassed a copy of SpecificCompiler that uses the Mustache language
> to generate code. He's also gone ahead and done some of the customizations.
> In the patch I'm about to post, I've replicated the existing code generation
> using Velocity. We already build Velocity for some of the IPC plugins, and
> it's an Apache project. The existing tests pass, plus I've added tests that
> check that the generated code is character-for-character the same, in a
> handful of cases. This was actually quite painful, since I had to reproduce
> some questionable indentation and trailing whitespace :). That said, I'm
> pleased with how easy it was to incorporate the templates.
> Eventually, I hope we support getters and setters, or perhaps support
> multiple versions of templates. (If someone wants to generate, say, C++
> code, the path is now a lot easier for that, as well.)
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.