<div dir="ltr">javaSource.addNestedType() should be what you are looking for.</div><div class="gmail_extra"><br><br><div class="gmail_quote">On Sun, Apr 13, 2014 at 11:14 AM, Lincoln Baxter, III <span dir="ltr"><<a href="mailto:lincolnbaxter@gmail.com" target="_blank">lincolnbaxter@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Hey Antonio. George fixed this in the most recent Roaster SNAPSHOT. Could you give it a try? Hopefully we got it!</div>
<div class="HOEnZb"><div class="h5"><div class="gmail_extra"><br><br><div class="gmail_quote">On Thu, Mar 27, 2014 at 9:03 AM, Antonio Goncalves <span dir="ltr"><<a href="mailto:antonio.mailing@gmail.com" target="_blank">antonio.mailing@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">@Lincoln I think I did try passing a String but it didn't work. Let me have an extra look at it<div>
<br></div><div>@Matt I've added a comment to the JIRA</div><div><br></div><div>Antonio</div></div><div class="gmail_extra">
<br><br><div class="gmail_quote">2014-03-25 18:59 GMT+01:00 Matt Benson <span dir="ltr"><<a href="mailto:gudnabrsam@gmail.com" target="_blank">gudnabrsam@gmail.com</a>></span>:<div><div><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
This is an open issue: <a href="https://issues.jboss.org/browse/FORGE-1582" target="_blank">https://issues.jboss.org/browse/FORGE-1582</a><br>
<span><font color="#888888"><br>
Matt<br>
</font></span><div><div><br>
On Tue, Mar 25, 2014 at 12:43 PM, Lincoln Baxter, III<br>
<<a href="mailto:lincolnbaxter@gmail.com" target="_blank">lincolnbaxter@gmail.com</a>> wrote:<br>
> Hey Antonio,<br>
><br>
> I don't really know how to do this off the top of my head. My guess is that<br>
> you'll need to do what you've done for the prior elements and provide the<br>
> definition using a String. Will this work until we can add this<br>
> functionality to the API?<br>
><br>
> ~Lincoln<br>
><br>
><br>
> On Sun, Mar 23, 2014 at 10:37 AM, Antonio Goncalves<br>
> <<a href="mailto:antonio.mailing@gmail.com" target="_blank">antonio.mailing@gmail.com</a>> wrote:<br>
>><br>
>> It's not like I have the choice. This is the way you model a constraint<br>
>> with Bean Validation :<br>
>> <a href="http://beanvalidation.org/1.1/spec/#constraintsdefinitionimplementation-multipleconstraints" target="_blank">http://beanvalidation.org/1.1/spec/#constraintsdefinitionimplementation-multipleconstraints</a><br>
>><br>
>><br>
>> 2014-03-22 9:11 GMT+01:00 Luca Masini<br>
>> <<a href="mailto:luca.masini.mailing.list@gmail.com" target="_blank">luca.masini.mailing.list@gmail.com</a>>:<br>
>><br>
>>> Why don't you model it like "NamedQueries/NamedQuery" ?<br>
>>><br>
>>><br>
>>> 2014-03-22 7:25 GMT+01:00 Antonio Goncalves <<a href="mailto:antonio.mailing@gmail.com" target="_blank">antonio.mailing@gmail.com</a>>:<br>
>>>><br>
>>>> Hi,<br>
>>>><br>
>>>> This is a Roaster question. I've been trying to create a Bean Validation<br>
>>>> constraint properly... in vain. What I want to achieve is the following<br>
>>>> (notice the @List annotation) :<br>
>>>><br>
>>>> @Target({METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER})<br>
>>>> @Retention(RUNTIME)<br>
>>>> @Documented<br>
>>>> @Constraint(validatedBy = {})<br>
>>>> public @interface Email {<br>
>>>><br>
>>>> String message() default "wrong email address";<br>
>>>><br>
>>>> Class<?>[] groups() default {};<br>
>>>><br>
>>>> Class<? extends Payload>[] payload() default {};<br>
>>>><br>
>>>> @Target({METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER})<br>
>>>> @Retention(RUNTIME)<br>
>>>> @interface List {<br>
>>>> Email[] value();<br>
>>>> }<br>
>>>> }<br>
>>>><br>
>>>><br>
>>>> This is the code I've written. Both annotation are generated<br>
>>>> separately... but I don't know how to add listAnnotation inside<br>
>>>> emailAnnotation. Any idea ?<br>
>>>><br>
>>>> Thanks<br>
>>>><br>
>>>><br>
>>>><br>
>>>> public class Main {<br>
>>>> public static void main(String[] args) {<br>
>>>><br>
>>>><br>
>>>><br>
>>>><br>
>>>><br>
>>>> // This is the inner annotation List<br>
>>>> final JavaAnnotationSource listAnnotation =<br>
>>>> Roaster.create(JavaAnnotationSource.class);<br>
>>>><br>
>>>><br>
>>>><br>
>>>><br>
>>>> listAnnotation.setName("List");<br>
>>>><br>
>>>><br>
>>>><br>
>>>><br>
>>>><br>
>>>> listAnnotation.addAnnotation(Retention.class).setEnumValue(RUNTIME);<br>
>>>><br>
>>>><br>
>>>><br>
>>>><br>
>>>> listAnnotation.addAnnotation(Target.class).setEnumValue(METHOD,<br>
>>>> FIELD, PARAMETER, TYPE);<br>
>>>><br>
>>>><br>
>>>><br>
>>>><br>
>>>> listAnnotation.addAnnotationElement("Email[] value()");<br>
>>>><br>
>>>><br>
>>>><br>
>>>><br>
>>>> System.out.println(listAnnotation);<br>
>>>><br>
>>>><br>
>>>><br>
>>>><br>
>>>><br>
>>>> // This is the annotation @Email<br>
>>>> final JavaAnnotationSource emailAnnotation =<br>
>>>> Roaster.create(JavaAnnotationSource.class);<br>
>>>><br>
>>>><br>
>>>><br>
>>>><br>
>>>><br>
>>>> emailAnnotation.setPackage("org.agoncal.proj.constraints").setName("Email");<br>
>>>><br>
>>>><br>
>>>><br>
>>>><br>
>>>> emailAnnotation.addImport(Payload.class);<br>
>>>><br>
>>>><br>
>>>><br>
>>>><br>
>>>> emailAnnotation.addAnnotation(Documented.class);<br>
>>>><br>
>>>><br>
>>>><br>
>>>><br>
>>>><br>
>>>> emailAnnotation.addAnnotation(Retention.class).setEnumValue(RUNTIME);<br>
>>>><br>
>>>><br>
>>>><br>
>>>><br>
>>>> emailAnnotation.addAnnotation(Target.class).setEnumValue(METHOD,<br>
>>>> FIELD, PARAMETER, TYPE);<br>
>>>><br>
>>>><br>
>>>><br>
>>>><br>
>>>><br>
>>>> emailAnnotation.addAnnotation(Constraint.class).setLiteralValue("validatedBy",<br>
>>>> "{}");<br>
>>>><br>
>>>><br>
>>>><br>
>>>><br>
>>>> emailAnnotation.addAnnotationElement("String message() default<br>
>>>> \"wrong email address\"");<br>
>>>><br>
>>>><br>
>>>><br>
>>>><br>
>>>> emailAnnotation.addAnnotationElement("Class<?>[] groups()<br>
>>>> default {}");<br>
>>>><br>
>>>><br>
>>>><br>
>>>><br>
>>>> emailAnnotation.addAnnotationElement("Class<? extends Payload>[]<br>
>>>> payload() default {}");<br>
>>>><br>
>>>><br>
>>>><br>
>>>><br>
>>>><br>
>>>> // I was expecting to have a method like that so I could add<br>
>>>> annotation inside another one<br>
>>>> // emailAnnotation.addAnnotationElement(emailAnnotation);<br>
>>>><br>
>>>> System.out.println(emailAnnotation);<br>
>>>><br>
>>>><br>
>>>><br>
>>>><br>
>>>><br>
>>>> }<br>
>>>><br>
>>>> }<br>
>>>><br>
>>>><br>
>>>><br>
>>>><br>
>>>> --<br>
>>>> Antonio Goncalves<br>
>>>> Software architect and Java Champion<br>
>>>><br>
>>>> Web site | Twitter | LinkedIn | Paris JUG | Devoxx France<br>
>>>><br>
>>>> _______________________________________________<br>
>>>> forge-dev mailing list<br>
>>>> <a href="mailto:forge-dev@lists.jboss.org" target="_blank">forge-dev@lists.jboss.org</a><br>
>>>> <a href="https://lists.jboss.org/mailman/listinfo/forge-dev" target="_blank">https://lists.jboss.org/mailman/listinfo/forge-dev</a><br>
>>><br>
>>><br>
>>><br>
>>><br>
>>> --<br>
>>> ****************************************<br>
>>> <a href="http://www.lucamasini.net" target="_blank">http://www.lucamasini.net</a><br>
>>> <a href="http://twitter.com/lmasini" target="_blank">http://twitter.com/lmasini</a><br>
>>> <a href="http://www.linkedin.com/pub/luca-masini/7/10/2b9" target="_blank">http://www.linkedin.com/pub/luca-masini/7/10/2b9</a><br>
>>> ****************************************<br>
>>><br>
>>> _______________________________________________<br>
>>> forge-dev mailing list<br>
>>> <a href="mailto:forge-dev@lists.jboss.org" target="_blank">forge-dev@lists.jboss.org</a><br>
>>> <a href="https://lists.jboss.org/mailman/listinfo/forge-dev" target="_blank">https://lists.jboss.org/mailman/listinfo/forge-dev</a><br>
>><br>
>><br>
>><br>
>><br>
>> --<br>
>> Antonio Goncalves<br>
>> Software architect and Java Champion<br>
>><br>
>> Web site | Twitter | LinkedIn | Paris JUG | Devoxx France<br>
>><br>
>> _______________________________________________<br>
>> forge-dev mailing list<br>
>> <a href="mailto:forge-dev@lists.jboss.org" target="_blank">forge-dev@lists.jboss.org</a><br>
>> <a href="https://lists.jboss.org/mailman/listinfo/forge-dev" target="_blank">https://lists.jboss.org/mailman/listinfo/forge-dev</a><br>
><br>
><br>
><br>
><br>
> --<br>
> Lincoln Baxter, III<br>
> <a href="http://ocpsoft.org" target="_blank">http://ocpsoft.org</a><br>
> "Simpler is better."<br>
><br>
> _______________________________________________<br>
> forge-dev mailing list<br>
> <a href="mailto:forge-dev@lists.jboss.org" target="_blank">forge-dev@lists.jboss.org</a><br>
> <a href="https://lists.jboss.org/mailman/listinfo/forge-dev" target="_blank">https://lists.jboss.org/mailman/listinfo/forge-dev</a><br>
_______________________________________________<br>
forge-dev mailing list<br>
<a href="mailto:forge-dev@lists.jboss.org" target="_blank">forge-dev@lists.jboss.org</a><br>
<a href="https://lists.jboss.org/mailman/listinfo/forge-dev" target="_blank">https://lists.jboss.org/mailman/listinfo/forge-dev</a><br>
</div></div></blockquote></div></div></div><div><div><br><br clear="all"><div><br></div>-- <br>Antonio Goncalves <br>Software architect and Java Champion<br><br><a href="http://www.antoniogoncalves.org/" target="_blank">Web site</a> | <a href="http://twitter.com/agoncal" target="_blank">Twitter</a> | <a href="http://www.linkedin.com/in/agoncal" target="_blank">LinkedIn</a> | <a href="http://www.parisjug.org/" target="_blank">Paris JUG</a> | <a href="http://www.devoxx.fr/" target="_blank">Devoxx France</a>
</div></div></div>
<br>_______________________________________________<br>
forge-dev mailing list<br>
<a href="mailto:forge-dev@lists.jboss.org" target="_blank">forge-dev@lists.jboss.org</a><br>
<a href="https://lists.jboss.org/mailman/listinfo/forge-dev" target="_blank">https://lists.jboss.org/mailman/listinfo/forge-dev</a><br></blockquote></div><br><br clear="all"><div><br></div>-- <br>Lincoln Baxter, III<br><a href="http://ocpsoft.org" target="_blank">http://ocpsoft.org</a><br>
"Simpler is better."
</div>
</div></div></blockquote></div><br><br clear="all"><div><br></div>-- <br>Lincoln Baxter, III<br><a href="http://ocpsoft.org" target="_blank">http://ocpsoft.org</a><br>"Simpler is better."
</div>