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

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

    • fire

      void fire(T event)

      Fires an event with the specified qualifiers and notifies observers.

      Parameters:
      event - the event object
      Throws:
      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(Annotation... qualifiers)

      Obtains a child Event for the given additional required qualifiers.

      Parameters:
      qualifiers - the additional specified qualifiers
      Returns:
      the child Event
      Throws:
      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 T> Event<U> select(Class<U> subtype, 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:
      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 T> Event<U> select(TypeLiteral<U> subtype, 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:
      IllegalArgumentException - if passed two instances of the same qualifier type, or an instance of an annotation that is not a qualifier type