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?
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?
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.
@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);
}
}
@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.
o interceptor do VRaptor é da requisição, não do método do controller…
vc tá usando o Spring ou o Guice?
Spring
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
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.