10. Join point match com anotações Expressão Exemplo de uso (@Executavel * *) Contém a anotação @Executavel (!@Executavel * *) Não contém a anotação @Executavel (@Executavel @Runnable * * ) Que contém as anotações @Executavel e @Runnable ( @(Executavel || Runnable) * *) Que contém a anotação @Executavel ou a anotação @Runnable @(br.targettrust..*) Qualquer anotação que esteja no pacote ou subpacote br.targettrust
11. Join point match com anotações Expressão Exemplo de uso @Criavel new(..) Qualquer construtor que tenha a anotação @Criavel !@Criavel new(..) Qualquer construtor que não tenha a anotação @Criavel. Cuidado com a interceptação de aspectos. @Criavel new(java.util.List) Qualquer construtor que receba um parâmetro do tipo List. @Criavel private new(..) Qualquer construtor privado que possua a anotação @Criavel.
12.
13. Declaração de warnings declare warning : within (br.com.targettrust.aop.*) && call (* faz*(..)) : "Você não deve chamar métodos com o prefixo faz*" ;
14. Declaração de errors declare error : within (br.com.targettrust.aop.*) && call (* deleteAll*(..)) : "Você não deve deletar tudo tche!!!" ;
15.
16.
17. Injeção de anotações public aspect JoinPointMacthWithAnnotationDeclareAnn { declare @type : br.com.targettrust.aop..* : @Exportavel ; declare @field : br.com.targettrust.aop..* : @Campo ; declare @method : public * br.com.targettrust.aop.DeclareAnnTest4.*(..) :@Metodo ; declare @constructor : br.com.targettrust.aop.DeclareAnnTest3+. new (..) : @Novo ; }