Interceptor VRaptor

2 respostas
jayrmotta

Olá, tudo bem?

Queria ver se alguém me dava a dica se é possível fazer algo com os VRaptor Interceptors, no Google Guice eu podia instalar módulos diversos para ambientes diferentes, exemplo:

[list]No ambiente de testes eu instalo um módulo, nenhum outro módulo tem conhecimento do mesmo. Neste módulo eu configuro pra quando métodos forem disparados para uma classe anotada com uma dada anotação criada por mim, as requisições devem ser interceptadas por um interceptor X.[/list]
Quero fazer isso pois quero fazer uma espécie de mock, atualmente no meu projeto utilizamos o VRaptor para expor controladores através de REST, e para testar de forma integrada (disparando a requisição através da rede) eu precisei escrever um “gerador de requests” que conhece as URL’s mapeadas para cada controlador.

Quero construir um interceptador que se adiciona a stack de execução do VRaptor somente no ambiente de testes e através da definição do método em ResourceMethod, InterceptorStack e o objeto da instância que disparou a requisição, criar a requisição adequada para aquele determinado método. Assim eu simplificarei muito meu ciclo de desenvolvimento pois não precisarei escrever esse código de fazer a requisição mais e nem muito menos manter as URL’s em uma enumeração para cada método do controlador exposto.

Em outras palavras, quero que a construção da requisição HTTP fique disfarçada de chamada de método “nativo” Java.

Pensei que talvez eu possa também usar o Spring pra atingir esse objetivo pois ele consegue inicializar um contexto de dependência em uma classe de testes, existe algo equivalente para o VRaptor?

Obrigado.

2 Respostas

Lucas_Cavalcanti

o que vc quer fazer dá pra fazer com o Guice AOP: http://code.google.com/p/google-guice/wiki/AOP

basta pra isso a classe ser um componente… (ela ser sempre referenciada por uma interface também ajuda)

jayrmotta

Lucas,

Na verdade foi no Google Guice que tirei essa idéia, achei algo equivalente no Spring, acho que resolverá.

Solucionei a característica de módulo específico para um dado ambiente adicionando um XML de contexto da aplicação na anotação ContextConfiguration do Spring.

Obrigado!

Criado 7 de agosto de 2011
Ultima resposta 7 de ago. de 2011
Respostas 2
Participantes 2