Package org.jboss.weld.event
Class ObserverNotifier
- java.lang.Object
-
- org.jboss.weld.event.ObserverNotifier
-
- Direct Known Subclasses:
TransactionalObserverNotifier
public class ObserverNotifier extends Object
Provides event-related operations such as observer method resolution and event delivery. An ObserverNotifier may be created with strict checks enabled. In such case event type checks are performed. Otherwise, the ObserverNotifier is called lenient. The lenient version should be used for internal dispatching of events only.- Author:
- Jozef Hartinger, David Allen
-
-
Field Summary
Fields Modifier and Type Field Description protected CurrentEventMetadatacurrentEventMetadata
-
Constructor Summary
Constructors Modifier Constructor Description protectedObserverNotifier(TypeSafeObserverResolver resolver, org.jboss.weld.bootstrap.api.ServiceRegistry services, boolean strict)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description protected ResolvablebuildEventResolvable(Type eventType, Annotation... qualifiers)protected ResolvablebuildEventResolvable(Type eventType, Set<Annotation> qualifiers)protected voidcheckEventObjectType(Object event)voidcheckEventObjectType(Type eventType)If strict checks are enabled this method performs event type checks on the given type.voidcheckEventSubtype(Type subtype)voidclear()Clears cached observer method resolutions and event type checks.voidfireEvent(Object event, javax.enterprise.inject.spi.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.voidfireEvent(Object event, Resolvable resolvable)Delivers the given event object to observer methods resolved based on the given resolvable.voidfireEvent(Type eventType, Object event, Annotation... qualifiers)Delivers the given event object to observer methods resolved based on the given event type and qualifiers.voidfireEvent(Type eventType, Object event, javax.enterprise.inject.spi.EventMetadata metadata, Annotation... qualifiers)<T> voidnotify(ResolvedObservers<T> observers, T event, javax.enterprise.inject.spi.EventMetadata metadata)Delivers the given event object to given observer methods.protected <T> voidnotifySyncObservers(List<javax.enterprise.inject.spi.ObserverMethod<? super T>> observers, T event, javax.enterprise.inject.spi.EventMetadata metadata)protected <T> voidnotifyTransactionObservers(List<javax.enterprise.inject.spi.ObserverMethod<? super T>> observers, T event, javax.enterprise.inject.spi.EventMetadata metadata)static ObserverNotifierof(String contextId, TypeSafeObserverResolver resolver, org.jboss.weld.bootstrap.api.ServiceRegistry services, boolean strict)<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.<T> ResolvedObservers<T>resolveObserverMethods(Resolvable resolvable)Resolves observer methods using the given resolvable.
-
-
-
Field Detail
-
currentEventMetadata
protected final CurrentEventMetadata currentEventMetadata
-
-
Constructor Detail
-
ObserverNotifier
protected ObserverNotifier(TypeSafeObserverResolver resolver, org.jboss.weld.bootstrap.api.ServiceRegistry services, boolean strict)
-
-
Method Detail
-
of
public static ObserverNotifier of(String contextId, TypeSafeObserverResolver resolver, org.jboss.weld.bootstrap.api.ServiceRegistry services, boolean strict)
- Parameters:
resolver-services-strict- indicates whether event type should be performed or not- Returns:
- ObserverNotifier instance
-
resolveObserverMethods
public <T> ResolvedObservers<T> resolveObserverMethods(Type eventType, Annotation... qualifiers)
Resolves observer methods based on the given event type and qualifiers. If strict checks are enabled the given type is verified.- Parameters:
event- the event objectqualifiers- given event qualifiers- Returns:
- resolved observer methods
-
resolveObserverMethods
public <T> ResolvedObservers<T> resolveObserverMethods(Type eventType, Set<Annotation> qualifiers)
Resolves observer methods based on the given event type and qualifiers. If strict checks are enabled the given type is verified.- Parameters:
event- the event objectqualifiers- given event qualifiers- Returns:
- resolved observer methods
-
resolveObserverMethods
public <T> ResolvedObservers<T> resolveObserverMethods(Resolvable resolvable)
Resolves observer methods using the given resolvable.- Parameters:
resolvable- the given resolvable- Returns:
- resolved observer methods
-
fireEvent
public void fireEvent(Object event, javax.enterprise.inject.spi.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. If strict checks are enabled the event object type is verified.- Parameters:
event- the event objectmetadata- event metadataqualifiers- event qualifiers
-
fireEvent
public 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. If strict checks are enabled the given type is verified.- Parameters:
eventType- the given event typeevent- the given event objectqualifiers- event qualifiers
-
fireEvent
public void fireEvent(Type eventType, Object event, javax.enterprise.inject.spi.EventMetadata metadata, Annotation... qualifiers)
-
fireEvent
public void fireEvent(Object event, Resolvable resolvable)
Delivers the given event object to observer methods resolved based on the given resolvable. If strict checks are enabled the event object type is verified.- Parameters:
event- the given event objectresolvable-
-
buildEventResolvable
protected Resolvable buildEventResolvable(Type eventType, Set<Annotation> qualifiers)
-
buildEventResolvable
protected Resolvable buildEventResolvable(Type eventType, Annotation... qualifiers)
-
clear
public void clear()
Clears cached observer method resolutions and event type checks.
-
checkEventObjectType
protected void checkEventObjectType(Object event)
-
checkEventObjectType
public void checkEventObjectType(Type eventType)
If strict checks are enabled this method performs event type checks on the given type. More specifically it verifies that no type variables nor wildcards are present within the event type. In addition, this method verifies, that the event type is not assignable to a container lifecycle event type. If strict checks are not enabled then this method does not perform any action.- Parameters:
eventType- the given event type- Throws:
IllegalArgumentException- if the strict mode is enabled and the event type contains a type variable, wildcard or is assignable to a container lifecycle event type
-
checkEventSubtype
public void checkEventSubtype(Type subtype)
- Parameters:
subtype-- Throws:
IllegalArgumentException- if the strict mode is enabled and the subtype contains a type variable- See Also:
Event.select(javax.enterprise.util.TypeLiteral, Annotation...)
-
notify
public <T> void notify(ResolvedObservers<T> observers, T event, javax.enterprise.inject.spi.EventMetadata metadata)
Delivers the given event object to given observer methods. Event metadata is made available for injection into observer methods, if needed.- Parameters:
observers- the given observer methodsevent- the given event objectmetadata- event metadata
-
notifySyncObservers
protected <T> void notifySyncObservers(List<javax.enterprise.inject.spi.ObserverMethod<? super T>> observers, T event, javax.enterprise.inject.spi.EventMetadata metadata)
-
notifyTransactionObservers
protected <T> void notifyTransactionObservers(List<javax.enterprise.inject.spi.ObserverMethod<? super T>> observers, T event, javax.enterprise.inject.spi.EventMetadata metadata)
-
-