[
https://issues.apache.org/jira/browse/AVRO-648?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12905076#action_12905076
]
Philip Zeyliger commented on AVRO-648:
--------------------------------------
I'll take a look at regenerating the patch with less whitespace later on. As
you can tell, I was working on it rather late, and excited that I got the tests
to pass :)
Pluggability for a template directory is the natural next patch. (Eventually,
we'll need templating or pluggability for filenames, too, since the deep nested
directory hierarchies are a Java thing: I have in mind as a use case a "doc"
generator a la javadoc, though maybe javadoc is good enough.)
BTW, I've now posted the patch at
https://review.cloudera.org/r/762/diff/#index_header , if you want to see it
side-by-side.
-- Philip
> 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
> 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.