Ryan Stull created AVRO-2327: -------------------------------- Summary: 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
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 service layers of an app. -- This message was sent by Atlassian JIRA (v7.6.3#76005)