public class ObserverNotifier extends Object
| Modifier and Type | Class and Description |
|---|---|
protected static interface |
ObserverNotifier.ObserverExceptionHandler
There are two different strategies of exception handling for observer methods.
|
| Modifier and Type | Field and Description |
|---|---|
protected CurrentEventMetadata |
currentEventMetadata |
| Modifier | Constructor and Description |
|---|---|
protected |
ObserverNotifier(String contextId,
TypeSafeObserverResolver resolver,
ServiceRegistry services,
boolean strict) |
| Modifier and Type | Method and Description |
|---|---|
protected Resolvable |
buildEventResolvable(Type eventType,
Annotation... qualifiers) |
protected Resolvable |
buildEventResolvable(Type eventType,
Set<Annotation> qualifiers) |
void |
clear()
Clears cached observer method resolutions and event type checks.
|
void |
fireEvent(Object event,
EventMetadata metadata,
Annotation... qualifiers)
Delivers the given event object to observer methods resolved based on the runtime type of the event object and given event qualifiers.
|
void |
fireEvent(Object event,
Resolvable resolvable)
Delivers the given event object to observer methods resolved based on the given resolvable.
|
void |
fireEvent(Type eventType,
Object event,
Annotation... qualifiers)
Delivers the given event object to observer methods resolved based on the given event type and qualifiers.
|
void |
fireEvent(Type eventType,
Object event,
EventMetadata metadata,
Annotation... qualifiers) |
protected void |
checkEventObjectType(Object event) |
void |
checkEventObjectType(Type eventType)
If strict checks are enabled this method performs event type checks on the given type.
|
<T> void |
notify(ResolvedObservers<T> observers,
T event,
EventMetadata metadata)
Delivers the given synchronous event object to synchronous and transactional observer methods.
|
<T,U extends T> |
notifyAsync(ResolvedObservers<T> observers,
U event,
EventMetadata metadata,
Executor executor)
Delivers the given asynchronous event object to given observer synchronous, transactional and asynchronous observer methods.
|
protected <T,U extends T> |
notifyAsyncObservers(List<ObserverMethod<? super T>> observers,
U event,
EventMetadata metadata,
Executor executor,
ObserverNotifier.ObserverExceptionHandler handler) |
protected <T> void |
notifySyncObservers(List<ObserverMethod<? super T>> observers,
T event,
EventMetadata metadata,
ObserverNotifier.ObserverExceptionHandler handler) |
protected <T> void |
notifyTransactionObservers(List<ObserverMethod<? super T>> observers,
T event,
EventMetadata metadata,
ObserverNotifier.ObserverExceptionHandler handler) |
<T> ResolvedObservers<T> |
resolveObserverMethods(Resolvable resolvable)
Resolves observer methods using the given resolvable.
|
<T> ResolvedObservers<T> |
resolveObserverMethods(Type eventType,
Annotation... qualifiers)
Resolves observer methods based on the given event type and qualifiers.
|
<T> ResolvedObservers<T> |
resolveObserverMethods(Type eventType,
Set<Annotation> qualifiers)
Resolves observer methods based on the given event type and qualifiers.
|
protected final CurrentEventMetadata currentEventMetadata
protected ObserverNotifier(String contextId, TypeSafeObserverResolver resolver, ServiceRegistry services, boolean strict)
public <T> ResolvedObservers<T> resolveObserverMethods(Type eventType, Annotation... qualifiers)
event - the event objectqualifiers - given event qualifierspublic <T> ResolvedObservers<T> resolveObserverMethods(Type eventType, Set<Annotation> qualifiers)
event - the event objectqualifiers - given event qualifierspublic <T> ResolvedObservers<T> resolveObserverMethods(Resolvable resolvable)
resolvable - the given resolvablepublic void fireEvent(Object event, EventMetadata metadata, Annotation... qualifiers)
event - the event objectmetadata - event metadataqualifiers - event qualifierspublic void fireEvent(Type eventType, Object event, Annotation... qualifiers)
eventType - the given event typeevent - the given event objectqualifiers - event qualifierspublic void fireEvent(Type eventType, Object event, EventMetadata metadata, Annotation... qualifiers)
public void fireEvent(Object event, Resolvable resolvable)
event - the given event objectresolvable - protected Resolvable buildEventResolvable(Type eventType, Set<Annotation> qualifiers)
protected Resolvable buildEventResolvable(Type eventType, Annotation... qualifiers)
public void clear()
protected void checkEventObjectType(Object event)
public void checkEventObjectType(Type eventType)
eventType - the given event typeIllegalArgumentException - if the strict mode is enabled and the event type contains a type variable, wildcard or is
assignable to a container lifecycle event typepublic <T> void notify(ResolvedObservers<T> observers, T event, EventMetadata metadata)
observers - the given observer methodsevent - the given event objectmetadata - event metadataprotected <T> void notifySyncObservers(List<ObserverMethod<? super T>> observers, T event, EventMetadata metadata, ObserverNotifier.ObserverExceptionHandler handler)
protected <T> void notifyTransactionObservers(List<ObserverMethod<? super T>> observers, T event, EventMetadata metadata, ObserverNotifier.ObserverExceptionHandler handler)
public <T,U extends T> CompletionStage<U> notifyAsync(ResolvedObservers<T> observers, U event, EventMetadata metadata, Executor executor)
TransactionPhase.IN_PROGRESS
are called synchronously in the current thread. Next, asynchronous observer methods are scheduled to be notified in a separate thread. Note that this method exits just after
event delivery to asynchronous observer methods is scheduled. EventMetadata is made available for injection into observer methods, if needed.
Note that if any of the observer methods throws an exception, it is never thrown out of this method. Instead, all the exceptions are grouped together using FireAsyncException
and the returned CompletionStage fails with this compound exception.
If an executor is provided then observer methods are notified using this executor. Otherwise, Weld's task executor is used.observers - the given observer methodsevent - the given event objectmetadata - event metadataexecutor - the executor to be used for asynchronous delivery - may be nullprotected <T,U extends T> CompletionStage<U> notifyAsyncObservers(List<ObserverMethod<? super T>> observers, U event, EventMetadata metadata, Executor executor, ObserverNotifier.ObserverExceptionHandler handler)
Copyright © 2015. All Rights Reserved.