Afin d’améliorer les performances du moteur d’informations de Generic System, un système de cache automatique qui évite la répétition de requêtes coûteuses au back-office a été mis en place.
De nombreuses méthodes qui renvoient un
Snapshot font par exemple appel à la méthode
getDependencies(), suivie d’un ou plusieurs filtres (seulement les instances, une valeur ou des composants donnés, etc.). Pour éviter d’avoir à re-filtrer les
Snapshot à plusieurs reprises, nous avons créé des arbres permettant de stocker les résultats des filtrages dans les classes
AbstractTsDependencies et
PseudoConcurrentCollection. L’arbre est constitué de nœuds contenant :
- l’index lui-même, sous forme d’implémentation de l’interface
Index fournissant les méthodes
add(),
remove() et
iterator() ;
- des enfants sous forme de
HashMap ayant pour clés des
IndexFilter et pour valeur le nœud contenant l’index filtré avec sa clef. Les entrées sont créées automatiquement lors du
get() si elles n’existent pas. La méthode
filter(List filters) va chercher le nœud de l’arbre correspondant aux filtres indiqués.
Continue reading Système d’indexation