[ https://issues.apache.org/jira/browse/AVRO-1186?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16769652#comment-16769652 ]
Ryan Stull commented on AVRO-1186: ---------------------------------- Is there any way to add an annotation that takes a parameter? I've run into this problem and asked this question on stack overflow, but didn't receive any responses yet. [https://stackoverflow.com/questions/54675764/how-to-supply-argument-to-a-javaannotation-on-an-avro-idl-file] Any help would be appreciated, thanks. > Java Annotations via IDL > ------------------------ > > Key: AVRO-1186 > URL: https://issues.apache.org/jira/browse/AVRO-1186 > Project: Apache Avro > Issue Type: New Feature > Components: java > Reporter: Sharmarke Aden > Assignee: Doug Cutting > Priority: Major > Fix For: 1.7.3 > > Attachments: AVRO-1186.patch, AVRO-1186.patch > > > We would like to have the ability to add Java annotations to fields in the > Avro IDL (i.e. JSR 303 Bean Validation annotations). From a protocol stand > point these annotations may not mean much (or could they?) but from the > application stand point having this feature would allow developers to use > Avro generated beans application wide. From view layer all the way to the > data layer. To support this feature an IDL file could look something like > this: > {code} > @namespace("test.annotations") > protocol TestProto { > record User { > //declare the annotations that are imported in the generated record class > @header{ > import org.hibernate.validator.constraints.NotBlank; > import org.hibernate.validator.constraints.Email; > } > > //for each field one can specify an annotation they would like to use. > @{@NotBlank} string username; > string password; > @{@Email} string email; > } > } > {code} > The above IDL would generate a Java class that looks something like this: > {code} > /** > * Autogenerated by Avro > * > * DO NOT EDIT DIRECTLY > */ > package com.simvia.mode.avro; > import org.hibernate.validator.constraints.NotBlank; > import org.hibernate.validator.constraints.Email; > @SuppressWarnings("all") > public class User extends org.apache.avro.specific.SpecificRecordBase > implements org.apache.avro.specific.SpecificRecord { > ... > @Deprecated @NotBlank public java.lang.CharSequence username; > @Deprecated public java.lang.CharSequence password; > @Deprecated @Email public java.lang.CharSequence email; > ... > } > {code} > Perhaps this is too language specific but IMO the benefits of this feature in > the Java world is worth the effort and the exception. -- This message was sent by Atlassian JIRA (v7.6.3#76005)