Olá,
Foi publicada uma nova versão do Reflection-DSL.
Para quem não conhece o projeto, ele permite fazer algo como:
Boolean isLogged = Introspector.forClass("package.User").create("param1", 2).method("isLogged").invoke();
String formatedValue = Introspector.forClass("package.FormatUtil").create(Locale.US).method("formatCurrency").invoke(1560.99, "R$ #,##");
Nesta versão foram implementadas as seguntes features:
Possibilidade de fazer buscas nas classes através de uma api semelhante a Criteria do hibernate
// Existem vários tipos de Restriction's, como: eq, ne, like, regex, in, withModifiers, annotatedWith, notAnnotatedWith, fieldClassEq, methodWithParams, disjunction (para fazer buscas complexas) entre outros. Confira!!
Criterion criterion = Introspector.createCriterion(ClasseDominio.class);
criterion.add(Restriction.annotatedWith(MyAnnotation.class));
List result = criterion.list(); //Retorna todos os fields e methods anotados com MyAnnotation.class !!!
Possibilidade de fazer buscas nas classes através de uma api semelhante a HQL do hibernate
// Tem todos os tipos de restrictions existentes na api Criterion!!
Query query = Introspector.createQuery("FROM package.ClasseDominio WHERE annotation eq 'package.MyAnnotation'");
List result = query.list(); //Retorna todos os fields e methods anotados com MyAnnotation.class !!!
Implementação de cache das buscas
Esperamos que este framework facilite seu trabalho ao utilizar reflection.
Ajudem-nos enviando sugestões, críticas e informações sobre bugs.
Obrigado.

