Master 1 d'Informatique - Option MAD (Middleware et Applications aDaptables) - Universit�
Grenoble I - UFR IMA
Aspect-Oriented Programming / AspectJ
Enseignant : Sara Bouchenak, Sara.Bouchenak@imag.fr
Page de l'option MAD :
http://sardes.inrialpes.fr/~bouchena/teaching/MAD/
TP 1 : Initiation � AspectJ
- Objectif
- Environnement logiciel
- Etapes du TP
(a) Exemple Hello
(b) Manipulation de pointcuts
(c) Manipulation de
d�clarations
(d) Manipulation d'introductions
(e) Pointcut cflow / cflowbelow
(f) Passage de
contexte entre poincut et advice
(g)
Manipulation de thisJoinPoint et thisJoinPointStaticPart
(h) Autres pointcuts
Mettre en pratique les concepts de l'AOP et d'AspectJ vus en cours.
Initiation � AspectJ � travers :
- la programmation d'aspects pour la ma�trise de la syntaxe AspectJ
- l'utilisation d'outils de compilation et de manipulation/�dition
d'aspects (ant, ajc, ajbrowser)
Les logiciels suivants sont n�cessaires au TP ; les installer s'ils ne sont
pas disponibles dans votre environnement.
Logiciels
Les logiciels n�cessaires au TP sont �galement disponibles dans ~sbouchen/ENS/MAD/AOP/Soft/
Variables d'environnement
D�finir les variables d'environnement suivantes :
Exemple de fichier de commandes pour Unix/tcsh env-tcsh (soit ajouter ces commandes � votre fichier
~/.cshrc, soit ex�cuter la commande source env-tcsh).
Exemple de fichier de commandes pour Windows env-win.bat (ex�cuter la commande env-win.bat).
Ces fichiers sont disponibles dans ~sbouchen/ENS/MAD/AOP/Soft/
Base logicielle
Copier le r�pertoire ~sbouchen/ENS/MAD/AOP/Project/Examples/ dans votre
arborescence de travail.
Tester l'exemple fourni dans Project/Examples/Hello :
- Ex�cution de l'application d'origine :
- compilation (commande ant compile)
- ex�cution (commande ant run)
- Ex�cution de l'application �tendue avec un aspect :
- compilation (commande ant compile_aj)
- ex�cution (commande ant run_aj)
R�cup�rer l'exemple qui est fourni dans Project/Examples/Tests :
- Compiler et tester les pointcuts et advices fournis ; ceux-ci capturent
les appels de
m�thodes (pointcut de type call) de l'application Hello et
ins�rent un affichage de message avant (advice before), autour (advice
around) et apr�s (advice after) les appels de m�thodes.
Voir le code AspectJ fourni dans le r�pertoire aspects.
- Ecrire de nouveaux aspect/pointcut relatifs � :
- l'ex�cution de constructeurs
- et ceci en appliquant un advice de type after.
- Compiler l'aspect. Pour cela, modifier le script ant (fichier build.xml)
pour g�n�rer un fichier d'archive .jar par type de pointcut (appel
de m�thodes, ex�cution de constructeurs, etc.)
- Tester l'aspect en utilisant l'exemple Hello pr�c�dent auquel
vous ajouterez un constructeur et l'appel � ce constructeur (pour mettre en
�vidence l'utilisation du nouvel aspect).
Etendre l'exemple fourni dans Project/Examples/Tests comme suit :
- Ecrire de nouveaux aspects pour :
- la d�claration de messages d'erreur affich�s lors de la compilation
- la d�claration de messages d'avertissement affich�s lors de la
compilation (si pas d�j� fait).
- Etendre l'exemple Hello pour mettre en �vidence l'utilisation des
nouveaux aspects.
- Tester les nouveaux aspects.
Etendre l'exemple fourni dans Project/Examples/Tests comme suit :
- Ecrire de nouveaux aspects pour :
- l'introduction de nouveaux attributs aux classes
- l'introduction de nouvelles m�thodes
- la modification de la hi�rarchie des classes.
- Etendre l'exemple Hello pour mettre en �vidence l'utilisation des
nouveaux aspects.
- Tester les nouveaux aspects.
Etendre l'exemple fourni dans Project/Examples/Tests comme suit :
- Ecrire de nouveaux aspects utilisant :
- le pointcut cflow pour l'appel de la m�thode main
- le poincut cflowbelow pour l'ex�cution de la m�thode main.
- Etendre, si n�cessaire, l'exemple Hello pour mettre en �vidence
l'utilisation des nouveaux aspects.
- Tester les nouveaux aspects.
Etendre l'exemple fourni dans Project/Examples/Tests comme suit :
- Ecrire de nouveaux aspects pour faire afficher :
- la signature du join point (m�thode ou constructeur),
- les param�tres de l'appel,
- l'objet sur lequel porte l'appel
- le r�sultat de l'appel
- l'exception lev�e par l'appel.
- Etendre, si n�cessaire, l'exemple Hello pour mettre en �vidence
l'utilisation des nouveaux aspects.
- Tester les nouveaux aspects.
Etudier les interfaces JoinPoint et JoinPoint.StaticPart (voir l'API
d'AspectJ)
Etendre l'exemple fourni dans Project/Examples/Tests comme suit :
- Ecrire de nouveaux aspects pour faire afficher diff�rentes informations
sur le join point.
- Etendre, si n�cessaire, l'exemple Hello pour mettre en �vidence
l'utilisation des nouveaux aspects.
- Tester les nouveaux aspects.
R�cup�rer l'exemple qui est fourni dans Project/Examples/Tests :
- Compiler et tester les pointcuts et advices fournis ; ceux-ci capturent
les appels de
m�thodes (pointcut de type call) de l'application Hello et
ins�rent un affichage de message avant (advice before), autour (advice
around) et apr�s (advice after) les appels de m�thodes.
Voir le code AspectJ fourni dans le r�pertoire aspects.
- Ecrire de nouveaux aspects, des pointcuts relatifs � :
- l'ex�cution de m�thodes
- l'appel de constructeurs
- l'initialisation de classes
- l'acc�s � un attribut en lecture
- l'acc�s � un attribut en �criture
- l'acc�s aux traitants d'exceptions
- et ceci en appliquant des advices de types before, after et around.
- Compiler les aspects. Pour cela, modifier le script ant (fichier build.xml)
pour g�n�rer un fichier d'archive .jar par type de pointcut (appel
de m�thodes, ex�cution de m�thodes, appel de constructeurs, etc.)
- Tester les aspects en utilisant l'exemple Hello pr�c�dent auquel
vous apporterez les modifications n�cessaires pour mettre en �vidence
l'utilisation des nouveaux aspects.