PAGUE 6 MESES
LEVE 12 MESES
GARANTIR DESCONTO

Fórum Duvida com AspectJ - referencias de pointcuts para um projeto externo Xlint:adviceDidNotMatch #414147

15/03/2012

0

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

Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar