Hey Antonio,
I don't really know how to do this off the top of my head. My guess is that
you'll need to do what you've done for the prior elements and provide the
definition using a String. Will this work until we can add this
functionality to the API?
~Lincoln
On Sun, Mar 23, 2014 at 10:37 AM, Antonio Goncalves <
antonio.mailing(a)gmail.com> wrote:
It's not like I have the choice. This is the way you model a
constraint
with Bean Validation :
http://beanvalidation.org/1.1/spec/#constraintsdefinitionimplementation-m...
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
>
--
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