Exercícios de AspectJ com Eclipse™
- Confira passos que devem ser tomados para completar a instalação do
Eclipse em Completando
a Instalação
- Usando o mesmo projeto criado na aula anterior vamos definir um exemplo
que usa uma hierarquia de aspectos, favorecendo o reuso de aspectos. Se
você salvou os arquivos da 1ª aula prática você pode importar o seu
projeto para o Eclipse (através do menu File), ou criar um novo projeto e
copiar os arquivos para o diretório (como criar um
projeto). O seguinte arquivo
contem as classes e a os aspectos resposta da aula anterior, descompacte-o
em um diretório e crie um projeto com o mesmo nome do diretório no
próprio. Lembre-se de adicionar o arquivo aspectjrt.jar na lista de bibliotecas do
seu projeto. Para fazê-lo vide a última parte de Completando
a Instalação
- crie o aspecto abstrato AbstractLogging
e defina no mesmo:
- um pointcut abstrato loggedMethods
- dois advice que imprimem o valor da variável thisJoinPoint
(contem informação sobre o join point corrente) antes e
depois do pointcut loggedMethods
- note que esta classe apenas define qual o comportamento associado
a logar join points, sem defini-los, o que deverá ser feito
por um subaspecto
- crie agora o aspecto abstrato AbstractCallLogging
que herda de AbstractLogging e defina no
mesmo o pointcut loggedMethods
identificando chamadas a quaisquer métodos com qualquer tipo de
retorno, qualquer lista de parâmetros, e de quaisquer classes.
- note que este aspecto define o pointcut loggedMethods identificando vários join
points. A idéia é que um terceiro aspecto restrinja esses join
point a um sistema específico.
- crie o aspecto concreto BancoCallLogging
que herda de AbstractCallLogging e redefine
o pointcut loggedMethods
identificando todos os join points identificados pelo pointcut
"herdado", porém restringindo o mesmo a join points
cujo alvo das chamadas sejam classes dos pacotes contas,
fachada, e gui.
- note que este aspecto apenas define que classes ou pacotes devem
ser logados
- com essa estrutura podemos definir outros subaspectos
abstratos de AbstractCallLogging para
logar chamadas de métodos de classes de um outro sistema. Além disso a
hierarquia também permite definir outros subaspectos de AbstractLogging
para, por exemplo, definir que as execuções de métodos (AbstractExecutionLogging)
ou os acessos a atributos (AbstractFieldLogging) serão logados.
- Para verificar de maneira mais fácil que classes um aspecto
afeta selecione o mesmo, vá na janela Outline e clique nos símbolos + de modo a verificar que
métodos de que classes o aspecto afeta. Como mostrado na figura abaixo.
- Note que o caminho contrário também pode ser feito, caso selecionemos
uma classe e na janela Outline cliquemos no + para descobrir que aspecto
afeta que métodos da classe, como mostrado na figura abaixo.
-
Mais exercícios