Duvida com AspectJ - referencias de pointcuts para um projeto externo Xlint:adviceDidNotMatch

Java

15/03/2012

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

advice defined in .... has not been applied
[Xlint:adviceDidNotMatch]


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
Oda San

Oda San

Curtidas 0
POSTAR