En route pour le ConfigurationStore (2) : Une collection qui balance !

Bon, si vous êtes toujours là, c'est que vous en voulez, alors vous allez en avoir !
Mais avant d'aller dans les trucs vraiment dingues, on va faire un petit détour du coté des collections et des événements.
Comme vous le savez sans doute, Java dispose d'un sacré paquet de collections. Des collections de tous genres, qu'apparemment tous les développeurs ne maîtrisent pas (alors que c'est pourtant, à mon sens, l'un des plus chouettes morceaux du JDK).
Pourtant, si vous avez été fouiller dans la doc des classes de l'article précédent, vous avez sans doute constaté que le PropertyChangeSupport fournit un moyen pour envoyer des événements concernant les éléments d'un tableau, mais pas ceux d'une collection. Si vous ne voyez pas, je peux clarifier pour vous, il s'agit des méthodes fireIndexedPropertyChange. Comme vous le voyez (on peut même regarder le source, si vous voulez), il s'agit d'envoi d'événements indexés qui se font d'ailleurs passer pour des événements, comme le montre la doc de IndexedPropertyChangeEvent. Une classe à priori innocente, hein ? Seulement, elle ne correspond qu'à des cas particulièrement spécifiques de collections : des collections où les éléments sont accessibles par indice, et des changements de valeurs qui ne concernent qu'une seule valeur. C'est-à-dire que, par exemple, si votre collection est un Set, vous êtes roulé (parce que dans un Set, les données n'ont pas d'indice). Et pareil pour une Map.
Cela dit, IndexedPropertyChangeEvent nous indique clairement comment faire pour étendre le mécanisme : il suffit, en fait, d'envoyer des événements qui sont des sous-classes de PropertyChangeEvent, et qui sont adaptées à notre cas.
Ce qui nous permet d'écrire quelques classes de collections supportant l'envoi d'événements. Bon, je ne vais pas forcément vous les détailler, ça fera un peu remplissage. Cela dit, pour l'exemple, voici un petit PropertySenderSet (les autres seront tous sur github quand j'aurais réussi à faire marcher ce … truc) :

Publicités

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s