Bom dia pessoal.
Este tópico tem dois objetivos. O primeiro é anunciar que o plugin vraptor-encryptor esta pronto e pronto para uso! Eis a primeira versão:
O segundo objetivo, é pedir ajuda a vocês para implementar a feature marcada como Coming Soon (ultima feature do readme).
Podem ajudar? Não faço ideia de como fazer.
No start da aplicação (aonde você chama a configuração), você pode usar o scannotation para que ele procure as classes que possuem as anotações.
Assim, você consegue ter um Set de classes que deverão ter o valor setado no field que está anotado.
Tome o cuidado de que a classe Class não implementa hashCode() e equals() então seria interessante usar o nome completo dela ou um wrapper para essa class.
O wrapper pode até ser interessante pois ele pode conter o field que contém a annotation que você quer e qual é a annotation que você quer.
Só precisa lembrar de implementar hashCode() e equals() para usar em um Set, assim, quando você fizer o set.contains(obj) ele funciona precisamente e é mais rápido que uma lista, dependendo da quantidade de objetos e da quantidade de requests que seu interceptor irá receber.
Para setar o field, você pode usar o Mirror para pegar o setter. Caso não exista setter, você faz um fallback para setar o valor próprio field (usando o setAcessible(true)).
Precisa pensar se compensa obrigar que todos os fields anotados precisam ser non-finals.
Ou deve existir alguma alternativa com reflection para setar um field final mesmo. (Isso aqui não me parece muito bom)