Hi,This is a Roaster question. I've been trying to create a Bean Validation constraint properly... in vain. What I want to achieve is the following (notice the @List annotation) :@Target({METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER})
@Retention(RUNTIME)
@Documented
@Constraint(validatedBy = {})
public @interface Email {
String message() default "wrong email address";
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default {};
@Target({METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER})
@Retention(RUNTIME)
@interface List {
Email[] value();
}
}
This is the code I've written. Both annotation are generated separately... but I don't know how to add listAnnotation inside emailAnnotation. Any idea ?
Thanks
public class Main {public static void main(String[] args) {// This is the inner annotation Listfinal JavaAnnotationSource listAnnotation = Roaster.create(JavaAnnotationSource.class);listAnnotation.setName("List");listAnnotation.addAnnotation(Retention.class).setEnumValue(RUNTIME);listAnnotation.addAnnotation(Target.class).setEnumValue(METHOD, FIELD, PARAMETER, TYPE);listAnnotation.addAnnotationElement("Email[] value()");System.out.println(listAnnotation);// This is the annotation @Emailfinal JavaAnnotationSource emailAnnotation = Roaster.create(JavaAnnotationSource.class);emailAnnotation.setPackage("org.agoncal.proj.constraints").setName("Email");emailAnnotation.addImport(Payload.class);emailAnnotation.addAnnotation(Documented.class);emailAnnotation.addAnnotation(Retention.class).setEnumValue(RUNTIME);emailAnnotation.addAnnotation(Target.class).setEnumValue(METHOD, FIELD, PARAMETER, TYPE);emailAnnotation.addAnnotation(Constraint.class).setLiteralValue("validatedBy", "{}");emailAnnotation.addAnnotationElement("String message() default \"wrong email address\"");emailAnnotation.addAnnotationElement("Class<?>[] groups() default {}");emailAnnotation.addAnnotationElement("Class<? extends Payload>[] payload() default {}");// I was expecting to have a method like that so I could add annotation inside another one// emailAnnotation.addAnnotationElement(emailAnnotation);System.out.println(emailAnnotation);}}
--
Antonio Goncalves
Software architect and Java Champion
Web site | Twitter | LinkedIn | Paris JUG | Devoxx France
_______________________________________________
forge-dev mailing list
forge-dev@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/forge-dev