POA - AspectJ

Utilisation d'ApsectJ

AspectJ défini une syntaxe qui lui est propre pour décrire les apects et les définirents éléments assoicés. L'élément principal pour la définition d'un aspect va être le fichier portant l'extension classiquement l'extension aj. La rédaction de ce fichier ce fait avec une syntaxe comportant peut d'éléments. Le bloc principal donne un nom à l'apsect, deux sous-blocs vont définir d'une part les pointcuts, d'autres part les advices associés.

Joint point

Le premier élément utilisé pour définir un joint point va être l'action auquel il est associé : appel d'une méthode, modification d'un attribut,... La sélection sur cette action va être rendue plus sépcifique en la complétant par une expression régulière qui limite la sélection de l'aspect à certainnes méthode ou certains paramêtres.
Exemple : call(void Point.set*(int)) // ce joint point est sélectionné pour tout les appels à les méthodes set prenant en paramètre un entier, ne retournant aucune valeur et ceci seulement pour la classe Point.
D'autres type d'action peuvent être utilisée dans la définisionn des joints points :

Advice

Trois type de code advice sont disponible. Le mot clef before est utilisé pour indiquer que l'aspect devra être tissé avant l'exécution de sa cible. Le code before indique qu'il devra être tissé après l'exécution de la cible. Enfin le code around qui est particulier, indique que le code sera exécuté en partie avant et en partie après l'aspect. Dans ce cas, c'est à la personne en charge de tisser l'apsect de positionner l'appel à la méthode initiale dans son advice. Si l'appel n'est pas inscrit de manière explicite, il ne sera pas effectué. On voit donc ici un comportement à risque de l'apsect. En effet, il est possible de supprimé les appels à des méthodes simplement en ajoutant un apsect. L'intrusion que réalise ainsi l'apsect peut être nuisible au débogage du code.

Fonctions logiques

Un ensemble de fonctions logiques est diponible pour contruire les points de coupures avec AspectJ, on peux détailler les suivantes :