Hi Simone. I little inconvenience with varargs is that it will produce warnings is user code because we use parametrized type Class<? extends Annotation> in it (see [1]). The correct solution would be to use @SafeVarargs [2] but it was only added in Java 7 and we target Java 5. So i think we better keep current constructor intact. When i mentioned asList() i was talking about internal use of it in Onami code instead of ListBuilder.
Also Onami user can use asList() himself and it is annotated with @SafeVarargs in Java 7+ so no warnings in this case. WDYT? [1]: http://stackoverflow.com/questions/4257883/warning-for-generic-varargs [2]: http://docs.oracle.com/javase/7/docs/api/java/lang/SafeVarargs.html 2013/3/14 Simone Tripodi <simonetrip...@apache.org> > Hi Mikhail! > > +1 for varargs, result would look charming like a sunshine: > > public AbstractLifeCycleModule( Class<? extends > Annotation>...annotationTypes ) > { > this( any(), asList( annotationTypes ) ); > } > > Of course I'd change the overloading constructor as well: > > public AbstractLifeCycleModule( Matcher<? super TypeLiteral<?>> > typeMatcher, Class<? extends Annotation>...annotationTypes ) > { > this( Arrays.asList( annotationTypes ), typeMatcher ); > } > > Clean, compact, clear, direct. We cannot ask more :) > Feel free to fill an issue and provide a fix. > > my 2 cents, > -Simo > > http://people.apache.org/~simonetripodi/ > http://simonetripodi.livejournal.com/ > http://twitter.com/simonetripodi > http://www.99soft.org/ > > > On Wed, Mar 13, 2013 at 1:15 PM, Mikhail Mazursky > <mikhail.mazur...@gmail.com> wrote: > > Hi Simone, Jordan. > > > > IMHO AbstractLifeCycleModule should check that the List that was passed > to > > it contains no duplicates and throw exception if it does. In any case > > behaviour in such situation should be described it JavaDocs. > > Also, is this ListBuilder need to be public API at all? And maybe get rid > > of it completely by using Arrays.asList()? > > > > 2013/3/12 Simone Tripodi <simonetrip...@apache.org> > > > >> Hi Jordan, > >> > >> >> * the adapted List of annotation should be IMHO a LinkedHashSet, > >> >> otherwise users could specify the same type twice in the list and > >> >> drive the lifecycle engine to invoke twice the same method in > >> >> different phases - IIUC this is not the desired behaviour, or is it? > >> > It's a List because it needs to be ordered. I hadn't thought about > >> duplicates. > >> > >> the LinkedHashSet[1] will preserve the order like the List does, > >> moreover will keep the unicity of its elements. > >> > >> >