Jboss Seam & JSF : n'oubliez pas d'indiquer la provenance des composants

Publié le par stoi

Récemment, j'ai pu aider un collègue qui devait débugger et reprendre une application Seam qui avait des fuites de mémoire. La personne qui avait développé cette appli avait fait rapide, sans se soucier de la durée de vie des composants, des données en mémoire etc..

Le premier problème qu'on a rencontré, c'est qu'il s'était laché sur le nombre de composants (@Name, @Datamodel, @Out ou @Unwrap) : il y avait jusqu'à 10 composants différents par page, sans indications d'où ils pouvaient bien provenir !

Prenez une variable annotée @Out par exemple : elle aura par défaut le scope de la classe qui la contient, et le nom qu'elle porte dans cette classe, mais c'est possible de modifier tout ça dans les paramètres du @Out. Donc quand vous vous retrouvez face à un rendered="#{isOk}", pour savoir d'où ça vient, et ce que ça vaut, je vous souhaite bien du courage.

On a donc convenu de mettre dans chaque page jsf un "header" contenant le chemin de chaque composant, afin d'avoir une chance de tout retrouver :
 <ui:remove> name : maClasse : ma.suite.de.packages.MaClasse datamodel : monModele : ma.suite.de.packages.MaClasse out : maVariable : ma.suite.de.packages.UneAutreClasse </ui:remove> 

Enfin n'oubliez jamais :
 Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Rick Osborne 
(pour les anglophobes : "Codez toujours comme si la personne qui va finir par reprendre votre code était un violent psychopathe et savait où vous viviez")



tags : Java EE, Seam, JSF

Publié dans Java

Commenter cet article