criei um AspectJ pra realizar log dos meus saves e updates da minha entidade Usuário.
public aspect AspectAuditoria{
private pointcut doSave(Usuario usuario)
: call (* UsuarioDAO.save(*)) && args(usuario);
after(Usuario usuario) returning(Usuario usuario) : doSave(usuario) {
// registra no log o save processado...
}
private pointcut doUpdate(Usuario usuario)
: execution(* UsuarioDao.update(*)) && args(usuario);
before(Usuario usuario) : doUpdate(usuario) {
// registra no log a intenção de update antes da conclusão...
}
after(Usuario usuario) returning() : doUpdate(usuario) {
// registra no log o update processado...
}
}
O UsuarioDAO tá bem simples…
public class UsuarioDao{
Usuario save(Usuario usuario);
void update(Usuario usuario);
}
Se eu coloco tudo num unico projeto, funciona! Mas se o DAO estiver em outro projeto, o eclipse informa o seguinte warning
[quote]advice defined in … has not been applied
[Xlint:adviceDidNotMatch][/quote]
esse warning fica no after e no before do update
Minha duvida é justamente a seguinte:
O estranho é que o after do save funciona! A diferença é que no update eu preciso do before e do after, dai eu tenho que usar execution ao inves do call, e é justamente esse meu problema… se eu coloco call, funciona… porem ele só executa o after… se eu deixo execution, acontece esse problema dos warnings e ele nao faz nem o before nem o after do update
Peço por favor um help
Grato pela atenção