VRaptor - @Intercepts funciona somente nos Controllers

6 respostas
D

Por acaso eu encontrei isso, implementei a interface Intercept fiz uma annotation para interceptar algo no meu DAO, dai percebi que nem chegava a entrar no metodo interceptador.

Isso é assim mesmo, ou falta alguma configuração?

6 Respostas

G

Basta você anotar a classe com @Intercepts, escolher um escopo (RequestScope, SessionScope, etc) e definir no método accepts a condição para que ele seja interceptado.

D
Foi exatamente o que eu fiz, já criei outros Intercepts e funciona somente nos controllers.
@Intercepts
@RequestScoped
@Lazy
public class TesteInterceptor implements Interceptor {
	public boolean accepts(ResourceMethod method) {
		return method.containsAnnotation(Teste.class);
	}

	@Override
	public void intercept(InterceptorStack stack, ResourceMethod method, Object instance) throws InterceptionException {
		System.out.println(method.getMethod().getDeclaringClass().getSimpleName()+"."+method.getMethod().getName());
		stack.next(method, instance);
	}
}
somente para efeito de teste coloquei a annotation num metodo no DAO.
@Teste	
	public Usuario validaLogin(Usuario usuario){
		Usuario u = ofy.query(Usuario.class).filter("email", usuario.getEmail()).filter("senha", usuario.getSenha()).get();
		return u;
	}

E nada, só passa no metodo no controller mesmo.

Lucas_Cavalcanti

o interceptor do VRaptor é da requisição, não do método do controller…

vc tá usando o Spring ou o Guice?

D

Spring

Lucas_Cavalcanti

dá uma olhada no AspectJ

vc pode fazer:

@Aspect
public class MeuAspecto {

    @Pointcut(...)
    public void metodo(){}

    @Before ou @After ou @Around
}

isso faz um interceptor pra qqer método/construtor da sua aplicação…

e funciona bem com o VRaptor desde q vc programe orientado a interfaces, ou use injeção via setter

D

Blz, acredito que vou precisar não exatamente agora, mais tarde talvez.

Mais eu achei isso por acaso, coloquei uma annotation no lugar errado (num dao), dai que eu percebi que não passava no inteceptor.

Criado 20 de outubro de 2010
Ultima resposta 20 de out. de 2010
Respostas 6
Participantes 3