T
- the type of the event objectpublic 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:
Events may also be fired asynchronously with fireAsync(Object)
and fireAsync(Object, NotificationOptions)
methods
Modifier and Type | Method and Description |
---|---|
void |
fire(T event)
Fires an event with the specified qualifiers and notifies observers.
|
<U extends T> |
fireAsync(U event)
Fires an event asynchronously with the specified qualifiers and notifies asynchronous observers.
|
<U extends T> |
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> |
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> |
select(TypeLiteral<U> subtype,
java.lang.annotation.Annotation... qualifiers)
Obtains a child Event for the given required type and additional required qualifiers.
|
void fire(T event)
Fires an event with the specified qualifiers and notifies observers.
event
- the event objectjava.lang.IllegalArgumentException
- if the runtime type of the event object contains a type variableObserverException
- if a notified observer throws a checked exception, it will be wrapped and rethrown as an
(unchecked) ObserverException
<U extends T> java.util.concurrent.CompletionStage<U> fireAsync(U event)
Fires an event asynchronously with the specified qualifiers and notifies asynchronous observers.
event
- the event objectCompletionStage
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.java.lang.IllegalArgumentException
- if the runtime type of the event object contains a type variable<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
event
- the event objectoptions
- the notification optionsCompletionStage
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.java.lang.IllegalArgumentException
- if the runtime type of the event object contains a type variableEvent<T> select(java.lang.annotation.Annotation... qualifiers)
Obtains a child Event for the given additional required qualifiers.
qualifiers
- the additional specified qualifiersjava.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<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
- the specified typesubtype
- a Class
representing the specified typequalifiers
- the additional specified qualifiersjava.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<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.
U
- the specified typesubtype
- a TypeLiteral
representing the specified typequalifiers
- the additional specified qualifiersjava.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