Les processeurs d’annotations
La mise en oeuvre de cette API nécessite l’utilisation des packages javax.annotation.processing, javax.lang.model et javax.tools.
Un processeur d’annotations doit implémenter l’interface Processor. Le traitement des annotations se fait en plusieurs passes (round). A chaque passe le processeur est appelé pour traiter des classes qui peuvent avoir été générées lors de la précédente passe. Lors de la première passe, ce sont les classes fournies initialement qui sont traitées.
L’interface javax.annotation.processing.Processor définit les méthodes d’un processeur d’annotations. Pour définir un processeur, il est possible de créer une classe qui implémente l’interface Processor mais le plus simple est d’hériter de la classe abstraite javax.annotation.processing.AbstractProcessor.
La classe AbstractProcessor contient une variable nommée processingEnv de type ProcessingEnvironment. La classe ProcessingEnvironment permet d’obtenir des instances de classes qui permettent des interactions avec l’extérieur du processeur ou fournissent des utilitaires :
Filer : classe qui permet la création de fichiers
Messager : classe qui permet d’envoyer des messages affichés par le compilateur
Elements : classe qui fournit des utilitaires pour les éléments
Types : classe qui fournit des utilitaires pour les types
La méthode getRootElements() renvoie les classes Java qui seront traitées par le processeur dans cette passe.
La méthode la plus importante est la méthode process() : c’est elle qui va contenir les traitements exécutés par le processeur. Elle possède deux paramètres :
Un ensemble des annotations qui seront traitées par le processeur
Un objet qui encapsule l’étape courante des traitements
Deux annotations sont dédiées aux processeurs d’annotations et doivent être utilisées sur la classe du processeur :
@SupportedAnnotationTypes : cette annotation permet de préciser les types d’annotations traitées par le processeur. La valeur « * » permet d’indiquer que tous seront traités.
@SupportedSourceVersion : cette annotation permet de préciser la version du code source traité par le processeur..
…..
Les annotations (588 KO) (Cours PDF)