It's not like I have the choice. This is the way you model a constraint
with Bean Validation :
2014-03-22 9:11 GMT+01:00 Luca Masini <luca.masini.mailing.list(a)gmail.com>:
Why don't you model it like "NamedQueries/NamedQuery"
?
2014-03-22 7:25 GMT+01:00 Antonio Goncalves <antonio.mailing(a)gmail.com>:
> 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 List
>
> final 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 @Email
>
> final 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 <
http://www.antoniogoncalves.org/> |
Twitter<http://twitter.com/agoncal>
> | LinkedIn <
http://www.linkedin.com/in/agoncal> | Paris
JUG<http://www.parisjug.org/>
> | Devoxx France <
http://www.devoxx.fr/>
>
> _______________________________________________
> forge-dev mailing list
> forge-dev(a)lists.jboss.org
>
https://lists.jboss.org/mailman/listinfo/forge-dev
>
--
****************************************
http://www.lucamasini.net
http://twitter.com/lmasini
http://www.linkedin.com/pub/luca-masini/7/10/2b9
****************************************
_______________________________________________
forge-dev mailing list
forge-dev(a)lists.jboss.org
https://lists.jboss.org/mailman/listinfo/forge-dev