<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">&lt;<a href="mailto:lincolnbaxter@gmail.com" target="_blank">lincolnbaxter@gmail.com</a>&gt;</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">&lt;<a href="mailto:antonio.mailing@gmail.com" target="_blank">antonio.mailing@gmail.com</a>&gt;</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&#39;t work. Let me have an extra look at it<div>

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



&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; 2014-03-22 9:11 GMT+01:00 Luca Masini<br>
&gt;&gt; &lt;<a href="mailto:luca.masini.mailing.list@gmail.com" target="_blank">luca.masini.mailing.list@gmail.com</a>&gt;:<br>
&gt;&gt;<br>
&gt;&gt;&gt; Why don&#39;t you model it like &quot;NamedQueries/NamedQuery&quot; ?<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; 2014-03-22 7:25 GMT+01:00 Antonio Goncalves &lt;<a href="mailto:antonio.mailing@gmail.com" target="_blank">antonio.mailing@gmail.com</a>&gt;:<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; Hi,<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; This is a Roaster question. I&#39;ve been trying to create a Bean Validation<br>
&gt;&gt;&gt;&gt; constraint properly... in vain. What I want to achieve is the following<br>
&gt;&gt;&gt;&gt; (notice the @List annotation) :<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; @Target({METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER})<br>
&gt;&gt;&gt;&gt; @Retention(RUNTIME)<br>
&gt;&gt;&gt;&gt; @Documented<br>
&gt;&gt;&gt;&gt; @Constraint(validatedBy = {})<br>
&gt;&gt;&gt;&gt; public @interface Email {<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;   String message() default &quot;wrong email address&quot;;<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;   Class&lt;?&gt;[] groups() default {};<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;   Class&lt;? extends Payload&gt;[] payload() default {};<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;   @Target({METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER})<br>
&gt;&gt;&gt;&gt;   @Retention(RUNTIME)<br>
&gt;&gt;&gt;&gt;   @interface List {<br>
&gt;&gt;&gt;&gt;     Email[] value();<br>
&gt;&gt;&gt;&gt;   }<br>
&gt;&gt;&gt;&gt; }<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; This is the code I&#39;ve written. Both annotation are generated<br>
&gt;&gt;&gt;&gt; separately... but I don&#39;t know how to add listAnnotation inside<br>
&gt;&gt;&gt;&gt; emailAnnotation. Any idea ?<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; Thanks<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; public class Main {<br>
&gt;&gt;&gt;&gt;     public static void main(String[] args) {<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;         // This is the inner annotation List<br>
&gt;&gt;&gt;&gt;         final JavaAnnotationSource listAnnotation =<br>
&gt;&gt;&gt;&gt; Roaster.create(JavaAnnotationSource.class);<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;         listAnnotation.setName(&quot;List&quot;);<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; listAnnotation.addAnnotation(Retention.class).setEnumValue(RUNTIME);<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;         listAnnotation.addAnnotation(Target.class).setEnumValue(METHOD,<br>
&gt;&gt;&gt;&gt; FIELD, PARAMETER, TYPE);<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;         listAnnotation.addAnnotationElement(&quot;Email[] value()&quot;);<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;         System.out.println(listAnnotation);<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;         // This is the annotation @Email<br>
&gt;&gt;&gt;&gt;         final JavaAnnotationSource emailAnnotation =<br>
&gt;&gt;&gt;&gt; Roaster.create(JavaAnnotationSource.class);<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; emailAnnotation.setPackage(&quot;org.agoncal.proj.constraints&quot;).setName(&quot;Email&quot;);<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;         emailAnnotation.addImport(Payload.class);<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;         emailAnnotation.addAnnotation(Documented.class);<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; emailAnnotation.addAnnotation(Retention.class).setEnumValue(RUNTIME);<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;         emailAnnotation.addAnnotation(Target.class).setEnumValue(METHOD,<br>
&gt;&gt;&gt;&gt; FIELD, PARAMETER, TYPE);<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; emailAnnotation.addAnnotation(Constraint.class).setLiteralValue(&quot;validatedBy&quot;,<br>
&gt;&gt;&gt;&gt; &quot;{}&quot;);<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;         emailAnnotation.addAnnotationElement(&quot;String message() default<br>
&gt;&gt;&gt;&gt; \&quot;wrong email address\&quot;&quot;);<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;         emailAnnotation.addAnnotationElement(&quot;Class&lt;?&gt;[] groups()<br>
&gt;&gt;&gt;&gt; default {}&quot;);<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;         emailAnnotation.addAnnotationElement(&quot;Class&lt;? extends Payload&gt;[]<br>
&gt;&gt;&gt;&gt; payload() default {}&quot;);<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;         // I was expecting to have a method like that so I could add<br>
&gt;&gt;&gt;&gt; annotation inside another one<br>
&gt;&gt;&gt;&gt;         // emailAnnotation.addAnnotationElement(emailAnnotation);<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;         System.out.println(emailAnnotation);<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;     }<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; }<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; --<br>
&gt;&gt;&gt;&gt; Antonio Goncalves<br>
&gt;&gt;&gt;&gt; Software architect and Java Champion<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; Web site | Twitter | LinkedIn | Paris JUG | Devoxx France<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; _______________________________________________<br>
&gt;&gt;&gt;&gt; forge-dev mailing list<br>
&gt;&gt;&gt;&gt; <a href="mailto:forge-dev@lists.jboss.org" target="_blank">forge-dev@lists.jboss.org</a><br>
&gt;&gt;&gt;&gt; <a href="https://lists.jboss.org/mailman/listinfo/forge-dev" target="_blank">https://lists.jboss.org/mailman/listinfo/forge-dev</a><br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; --<br>
&gt;&gt;&gt; ****************************************<br>
&gt;&gt;&gt; <a href="http://www.lucamasini.net" target="_blank">http://www.lucamasini.net</a><br>
&gt;&gt;&gt; <a href="http://twitter.com/lmasini" target="_blank">http://twitter.com/lmasini</a><br>
&gt;&gt;&gt; <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>
&gt;&gt;&gt; ****************************************<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; _______________________________________________<br>
&gt;&gt;&gt; forge-dev mailing list<br>
&gt;&gt;&gt; <a href="mailto:forge-dev@lists.jboss.org" target="_blank">forge-dev@lists.jboss.org</a><br>
&gt;&gt;&gt; <a href="https://lists.jboss.org/mailman/listinfo/forge-dev" target="_blank">https://lists.jboss.org/mailman/listinfo/forge-dev</a><br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; --<br>
&gt;&gt; Antonio Goncalves<br>
&gt;&gt; Software architect and Java Champion<br>
&gt;&gt;<br>
&gt;&gt; Web site | Twitter | LinkedIn | Paris JUG | Devoxx France<br>
&gt;&gt;<br>
&gt;&gt; _______________________________________________<br>
&gt;&gt; forge-dev mailing list<br>
&gt;&gt; <a href="mailto:forge-dev@lists.jboss.org" target="_blank">forge-dev@lists.jboss.org</a><br>
&gt;&gt; <a href="https://lists.jboss.org/mailman/listinfo/forge-dev" target="_blank">https://lists.jboss.org/mailman/listinfo/forge-dev</a><br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt; --<br>
&gt; Lincoln Baxter, III<br>
&gt; <a href="http://ocpsoft.org" target="_blank">http://ocpsoft.org</a><br>
&gt; &quot;Simpler is better.&quot;<br>
&gt;<br>
&gt; _______________________________________________<br>
&gt; forge-dev mailing list<br>
&gt; <a href="mailto:forge-dev@lists.jboss.org" target="_blank">forge-dev@lists.jboss.org</a><br>
&gt; <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>

&quot;Simpler is better.&quot;
</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>&quot;Simpler is better.&quot;
</div>