[
https://issues.apache.org/jira/browse/AVRO-2327?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16787468#comment-16787468
]
Ivan Greene commented on AVRO-2327:
-----------------------------------
[~rstull1250] please see my answer on your stackoverflow question; I believe
this issue may be closed.
> Add support for java annotations containing elements
> ----------------------------------------------------
>
> Key: AVRO-2327
> URL: https://issues.apache.org/jira/browse/AVRO-2327
> Project: Apache Avro
> Issue Type: Improvement
> Components: java
> Affects Versions: 1.8.2
> Reporter: Ryan Stull
> Priority: Minor
> Labels: usability
>
> Currently it seems AVRO only supports java annotations that do not contain
> [elements|https://docs.oracle.com/javase/tutorial/java/annotations/basics.html]
> (which are basically the parameters to the annotation).
> [Here's a stack overflow
> issue|https://stackoverflow.com/questions/54675764/how-to-supply-argument-to-a-javaannotation-on-an-avro-idl-file]
> which shows an example of this.
> It would be useful to have this feature because many java annotations require
> elements, and not supporting this means only a small portion of java
> annotations can be supported.
> An example use case would be: I want to store data in avro that I'm getting
> from a 3rd party service as a JSON response, and I want my AVRO idl file to
> have different field names from the response body. If I'm using GSON, or any
> other JSON parser that uses annotations to configure alternative name
> mapping, then there's no easy way to do this.
> To be more explicit, if I had a json response
> {code:json}
> {
> "name": "Jeff"
> }
> {code}
> and an avro file
> {code:js}
> protocol Response {
> record Response {
> string @javaAnnotation("com.google.gson.annotations.SerializedName")
> userName;
> }
> }
> {code}
> Then there's no way to tell the GSON annotation about the alternate name is
> "name". In java you would just use:
> {code:java}
> public class Response {
> @com.google.gson.annotations.SerializedName("name")
> String userName;
> }
> {code}
> Supporting this feature would allow the generated java classes to be easily
> reused throughout the different layers of an app.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)