Class ListenerSet<L>

java.lang.Object
org.nuiton.util.ListenerSet<L>
Type Parameters:
L - listeners type
All Implemented Interfaces:
java.lang.Iterable<L>

public class ListenerSet<L>
extends java.lang.Object
implements java.lang.Iterable<L>

Cette classe permet de mettre en place facilement le support de listeners. Elle ne permet d'ajouter qu'une seul fois le meme listener. Si elle est la derniere à avoir une référence sur le listener, le listener est supprimé de la liste des listeners.

Si on souhaite avoir une vérification sur le type de listener ajouté il faut utiliser le constructeur qui prend une classe en paramètre. Dans ce cas la méthode add(Object) vérifie que l'object passé est bien du type ou un enfant du type donné en paramètre du constructeur

Il y a deux façon de prévenir les listeners d'un event soit par le mécanisme inclu dans cette classe en utilisant la méthode fire(java.lang.String, java.lang.Object) soit en utilisant soit même l'Iterateur sur les listeners encore valide.

 ListenerSet listeners = new ListenerSet();
 ...
 listeners.fire("monEvent", MonObjetEvent);
 
ou bien
 ListenerSet listeners = new ListenerSet();
 ...
 for(Iterator i=listeners.iterator(); i.hasNext();){
     MonListener l = (MonListener)i.next();
     l.monEvent(MonObjetEvent);
 }
 
Cette deuxième façon de faire est plus sûr car elle n'utilise pas l'introspection et donc une vérification est faite sur le nom de la méthode à appeler à la compilation, mais elle est plus verbeuse à écrire.
See Also:
CategorisedListenerSet
  • Field Summary

    Fields 
    Modifier and Type Field Description
    protected java.util.HashSet<java.lang.ref.Reference<L>> listeners
    Listeners reference set.
  • Constructor Summary

    Constructors 
    Constructor Description
    ListenerSet()  
  • Method Summary

    Modifier and Type Method Description
    void add​(L l)
    Ajoute un listener dans la liste des listeners.
    void addAll​(ListenerSet<L> ls)
    ajoute tous les listeners d'un ListenerSet
    void fire​(java.lang.String methodName)
    Appele la méthode du listener sans argument.
    void fire​(java.lang.String methodName, java.lang.Object event)
    Appel la méthode du listener en passant l'objet event en paramètre Cette méthode echoue si la methode ou l'objet contenant la methode a appeler n'est pas public
    java.util.Iterator<L> iterator()
    Get iterator on listener list.
    void remove​(L l)
    Remove listener.
    int size()  
    java.lang.String toString()  

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait

    Methods inherited from interface java.lang.Iterable

    forEach, spliterator
  • Field Details

    • listeners

      protected java.util.HashSet<java.lang.ref.Reference<L>> listeners
      Listeners reference set.
  • Constructor Details

  • Method Details

    • size

      public int size()
    • add

      public void add​(L l)
      Ajoute un listener dans la liste des listeners.
      Parameters:
      l - le listener à ajouter. Si l'objet passé est null, rien n'est fait si l'objet n'est pas du type passé en argument du constructeur une IllegalArgumentException est levée.
    • addAll

      public void addAll​(ListenerSet<L> ls)
      ajoute tous les listeners d'un ListenerSet
      Parameters:
      ls - The feature to be added to the All attribute
    • fire

      public void fire​(java.lang.String methodName, java.lang.Object event) throws java.lang.Exception
      Appel la méthode du listener en passant l'objet event en paramètre Cette méthode echoue si la methode ou l'objet contenant la methode a appeler n'est pas public
      Parameters:
      methodName - le nom de la methode a appeler
      event - l'event a passer en parametre de la methode a appeler
      Throws:
      java.lang.Exception - si un des listeners leve une exception lors de l'appel
    • fire

      public void fire​(java.lang.String methodName) throws java.lang.Exception
      Appele la méthode du listener sans argument. Cette méthode echoue si la methode ou l'objet contenant la methode a appeler n'est pas public.
      Parameters:
      methodName - le nom de la methode a appeler
      Throws:
      java.lang.Exception - si un des listeners leve une exception lors de l'appel
    • iterator

      public java.util.Iterator<L> iterator()
      Get iterator on listener list.
      Specified by:
      iterator in interface java.lang.Iterable<L>
      Returns:
      iterator on listener list.
    • remove

      public void remove​(L l)
      Remove listener.
      Parameters:
      l - listener to remove
    • toString

      public java.lang.String toString()
      Overrides:
      toString in class java.lang.Object