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.

    Events may also be fired asynchronously with fireAsync(Object) and fireAsync(Object, NotificationOptions) methods

    • 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.
      <U extends T>
      java.util.concurrent.CompletionStage<U>
      fireAsync​(U event)
      Fires an event asynchronously with the specified qualifiers and notifies asynchronous observers.
      <U extends T>
      java.util.concurrent.CompletionStage<U>
      fireAsync​(U event, NotificationOptions options)
      Fires an event asynchronously with the specified qualifiers and notifies asynchronous 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
      • fireAsync

        <U extends T> java.util.concurrent.CompletionStage<U> fireAsync​(U event)

        Fires an event asynchronously with the specified qualifiers and notifies asynchronous observers.

        Parameters:
        event - the event object
        Returns:
        a CompletionStage allowing further pipeline composition on the asynchronous operation. Default asynchronous execution facility is container specific. If any observer notified by this event throws an exception then the resulting CompletionStage is completed exceptionally with CompletionException that wraps all the exceptions raised by observers as suppressed exception. If no exception is thrown by observers then the resulting CompletionStage is completed normally with the event payload.
        Throws:
        java.lang.IllegalArgumentException - if the runtime type of the event object contains a type variable
        Since:
        2.0
      • fireAsync

        <U extends T> java.util.concurrent.CompletionStage<U> fireAsync​(U event,
                                                                        NotificationOptions options)

        Fires an event asynchronously with the specified qualifiers and notifies asynchronous observers. A custom Executor will be used to make asynchronous calls

        Parameters:
        event - the event object
        options - the notification options
        Returns:
        a CompletionStage allowing further pipeline composition on the asynchronous operation. Default asynchronous execution facility is container specific. If any observer notified by this event throws an exception then the resulting CompletionStage is completed exceptionally with CompletionException that wraps all the exceptions raised by observers as suppressed exception. If no exception is thrown by observers then the resulting CompletionStage is completed normally with the event payload.
        Throws:
        java.lang.IllegalArgumentException - if the runtime type of the event object contains a type variable
        Since:
        2.0
      • 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 non repeating 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 non repeating 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 non repeating qualifier type, or an instance of an annotation that is not a qualifier type