Interface Event<T>

  • Type Parameters:
    T - the type of the event object


    public interface Event<T>

    Allows the application to fire events of a particular type.

    Beans fire events via an instance of the Event interface, which may be injected:

     @Inject
     @Any
     Event<LoggedInEvent> loggedInEvent;
     

    The fire() method accepts an event object:

     public void login() { 
        ...
        loggedInEvent.fire( new LoggedInEvent(user) );
     }
     

    Any combination of qualifiers may be specified at the injection point:

     @Inject
     @Admin
     Event<LoggedInEvent> adminLoggedInEvent;
     

    Or, the @Any qualifier may be used, allowing the application to specify qualifiers dynamically:

     @Inject
     @Any
     Event<LoggedInEvent> loggedInEvent;
     

    For an injected Event:

    • the specified type is the type parameter specified at the injection point, and
    • the specified qualifiers are the qualifiers specified at the injection point.
    • Method Summary

      All Methods Instance Methods Abstract Methods 
      Modifier and Type Method Description
      void fire​(T event)
      Fires an event with the specified qualifiers and notifies observers.
      Event<T> select​(java.lang.annotation.Annotation... qualifiers)
      Obtains a child Event for the given additional required qualifiers.
      <U extends T>
      Event<U>
      select​(java.lang.Class<U> subtype, java.lang.annotation.Annotation... qualifiers)
      Obtains a child Event for the given required type and additional required qualifiers.
      <U extends T>
      Event<U>
      select​(TypeLiteral<U> subtype, java.lang.annotation.Annotation... qualifiers)
      Obtains a child Event for the given required type and additional required qualifiers.
    • Method Detail

      • fire

        void fire​(T event)

        Fires an event with the specified qualifiers and notifies observers.

        Parameters:
        event - the event object
        Throws:
        java.lang.IllegalArgumentException - if the runtime type of the event object contains a type variable
        ObserverException - if a notified observer throws a checked exception, it will be wrapped and rethrown as an (unchecked) ObserverException
      • select

        Event<T> select​(java.lang.annotation.Annotation... qualifiers)

        Obtains a child Event for the given additional required qualifiers.

        Parameters:
        qualifiers - the additional specified qualifiers
        Returns:
        the child Event
        Throws:
        java.lang.IllegalArgumentException - if passed two instances of the same qualifier type, or an instance of an annotation that is not a qualifier type
      • select

        <U extends TEvent<U> select​(java.lang.Class<U> subtype,
                                      java.lang.annotation.Annotation... qualifiers)

        Obtains a child Event for the given required type and additional required qualifiers.

        Type Parameters:
        U - the specified type
        Parameters:
        subtype - a Class representing the specified type
        qualifiers - the additional specified qualifiers
        Returns:
        the child Event
        Throws:
        java.lang.IllegalArgumentException - if passed two instances of the same qualifier type, or an instance of an annotation that is not a qualifier type
      • select

        <U extends TEvent<U> select​(TypeLiteral<U> subtype,
                                      java.lang.annotation.Annotation... qualifiers)

        Obtains a child Event for the given required type and additional required qualifiers.

        Type Parameters:
        U - the specified type
        Parameters:
        subtype - a TypeLiteral representing the specified type
        qualifiers - the additional specified qualifiers
        Returns:
        the child Event
        Throws:
        java.lang.IllegalArgumentException - if passed two instances of the same qualifier type, or an instance of an annotation that is not a qualifier type