Interface BeanContainer
- All Known Subinterfaces:
BeanManager
,ELAwareBeanManager
BeanContainer
is a superclass of BeanManager
containing capabilities that are portable across
all CDI environments.
Provides operations for obtaining contextual references for beans, along with many other operations of use to CDI applications.
Any bean may obtain an instance of BeanContainer
by injecting it:
@Inject BeanContainer container;
- Since:
- 4.0
- Author:
- Matej Novotny
-
Method Summary
Modifier and TypeMethodDescription<T> CreationalContext<T>
createCreationalContext
(Contextual<T> contextual) Obtain an instance of aCreationalContext
for the given contextual type, or for a non-contextual object.Obtains anInstance
object to access to beans instances.getBeans
(Type beanType, Annotation... qualifiers) Return the set of beans which have the given required type and qualifiers and are available for injection in the module or library containing the class into which theBeanManager
/BeanContainer
was injected or, in the Jakarta EE environment, the Jakarta EE component from whose JNDI environment namespace theBeanManager
/BeanContainer
was obtained, according to the rules of typesafe resolution.Return the set of beans which have the given EL name and are available for injection in the module or library containing the class into which theBeanManager
/BeanContainer
was injected or, in the Jakarta EE environment, the Jakarta EE component from whose JNDI environment namespace theBeanManager
/BeanContainer
was obtained, according to the rules of EL name resolution.getContext
(Class<? extends Annotation> scopeType) Obtains an active context object for the given scope .getContexts
(Class<? extends Annotation> scopeType) Obtains all context objects, active and inactive, for the given scope.getEvent()
Returns an instance of Event with specified typejava.lang.Object
and specified qualifier@Default
It allows typesafe synchronous or asynchronous event firing without injection ofEvent
built-in bean requirement.getReference
(Bean<?> bean, Type beanType, CreationalContext<?> ctx) Obtains a contextual reference for a certain bean and a certain bean type of the bean.boolean
isInterceptorBinding
(Class<? extends Annotation> annotationType) Test the given annotation type to determine if it is an interceptor binding type .boolean
isMatchingBean
(Set<Type> beanTypes, Set<Annotation> beanQualifiers, Type requiredType, Set<Annotation> requiredQualifiers) Returnstrue
if a bean with given bean types and qualifiers would be assignable to an injection point with given required type and required qualifiers,false
otherwise.boolean
isMatchingEvent
(Type specifiedType, Set<Annotation> specifiedQualifiers, Type observedEventType, Set<Annotation> observedEventQualifiers) Returnstrue
if an event with given specified type and specified qualifiers would match an observer method with given observed event type and observed event qualifiers,false
otherwise.boolean
isNormalScope
(Class<? extends Annotation> annotationType) Test the given annotation type to determine if it is a normal scope type.boolean
isQualifier
(Class<? extends Annotation> annotationType) Test the given annotation type to determine if it is a qualifier type.boolean
isScope
(Class<? extends Annotation> annotationType) Test the given annotation type to determine if it is a scope type.boolean
isStereotype
(Class<? extends Annotation> annotationType) Test the given annotation type to determine if it is a stereotype.<X> Bean<? extends X>
Apply the ambiguous dependency resolution rules to a set of beans.List<Interceptor<?>>
resolveInterceptors
(InterceptionType type, Annotation... interceptorBindings) Return an ordered list of enabled interceptors for a set of interceptor bindings and a type of interception and which are enabled in the module or library containing the class into which theBeanManager
/BeanContainer
was injected or, in the Jakarta EE environment, the Jakarta EE component from whose JNDI environment namespace theBeanManager
/BeanContainer
was obtained.<T> Set<ObserverMethod<? super T>>
resolveObserverMethods
(T event, Annotation... qualifiers) Return an ordered set of observer methods for an event.
-
Method Details
-
getReference
Obtains a contextual reference for a certain bean and a certain bean type of the bean.
- Parameters:
bean
- theBean
object representing the beanbeanType
- a bean type that must be implemented by any client proxy that is returnedctx
- aCreationalContext
that may be used to destroy any object with scopeDependent
that is created- Returns:
- a contextual reference representing the bean
- Throws:
IllegalArgumentException
- if the given type is not a bean type of the given beanIllegalStateException
- if called during application initialization, before theAfterDeploymentValidation
event is fired.
-
createCreationalContext
Obtain an instance of aCreationalContext
for the given contextual type, or for a non-contextual object.- Type Parameters:
T
- type of the instance- Parameters:
contextual
- theContextual
, or a null value in the case of a non-contextual object- Returns:
- the new
CreationalContext
-
getBeans
Return the set of beans which have the given required type and qualifiers and are available for injection in the module or library containing the class into which theBeanManager
/BeanContainer
was injected or, in the Jakarta EE environment, the Jakarta EE component from whose JNDI environment namespace theBeanManager
/BeanContainer
was obtained, according to the rules of typesafe resolution. If no qualifiers are given, the default qualifier is assumed.Note that when called during invocation of an
AfterBeanDiscovery
event observer, this method will only return beans discovered by the container before theAfterBeanDiscovery
event is fired.- Parameters:
beanType
- the required bean typequalifiers
- the required qualifiers- Returns:
- the resulting set of beans
- Throws:
IllegalArgumentException
- if the given type represents a type variableIllegalArgumentException
- if two instances of the same non repeating qualifier type are givenIllegalArgumentException
- if an instance of an annotation that is not a qualifier type is givenIllegalStateException
- if called during application initialization, before theAfterBeanDiscovery
event is fired.
-
getBeans
Return the set of beans which have the given EL name and are available for injection in the module or library containing the class into which theBeanManager
/BeanContainer
was injected or, in the Jakarta EE environment, the Jakarta EE component from whose JNDI environment namespace theBeanManager
/BeanContainer
was obtained, according to the rules of EL name resolution.Note that when called during invocation of an
AfterBeanDiscovery
event observer, this method will only return beans discovered by the container before theAfterBeanDiscovery
event is fired.- Parameters:
name
- the EL name- Returns:
- the resulting set of beans
- Throws:
IllegalStateException
- if called during application initialization, before theAfterBeanDiscovery
event is fired.
-
resolve
Apply the ambiguous dependency resolution rules to a set of beans.Note that when called during invocation of an
AfterBeanDiscovery
event observer, this method will only return beans discovered by the container before theAfterBeanDiscovery
event is fired.- Type Parameters:
X
- a common type of the beans- Parameters:
beans
- a set of beans of the given type- Returns:
- the resolved bean, or null if null or an empty set is passed
- Throws:
AmbiguousResolutionException
- if the ambiguous dependency resolution rules failIllegalStateException
- if called during application initialization, before theAfterBeanDiscovery
event is fired.
-
resolveObserverMethods
Return an ordered set of observer methods for an event.Note that when called during invocation of an
AfterBeanDiscovery
event observer, this method will only return observers discovered by the container before theAfterBeanDiscovery
event is fired.- Type Parameters:
T
- the type of the event- Parameters:
event
- the event objectqualifiers
- the event qualifiers- Returns:
- the resulting set of observer methods
- Throws:
IllegalArgumentException
- if the runtime type of the event object contains a type variableIllegalArgumentException
- if two instances of the same non repeating qualifier type are givenIllegalArgumentException
- if an instance of an annotation that is not a qualifier type is givenIllegalStateException
- if called during application initialization, before theAfterBeanDiscovery
event is fired.
-
resolveInterceptors
Return an ordered list of enabled interceptors for a set of interceptor bindings and a type of interception and which are enabled in the module or library containing the class into which theBeanManager
/BeanContainer
was injected or, in the Jakarta EE environment, the Jakarta EE component from whose JNDI environment namespace theBeanManager
/BeanContainer
was obtained.Note that when called during invocation of an
AfterBeanDiscovery
event observer, this method will only return interceptors discovered by the container before theAfterBeanDiscovery
event is fired.- Parameters:
type
- the type of the interceptioninterceptorBindings
- the interceptor bindings- Returns:
- the resulting set of interceptors
- Throws:
IllegalArgumentException
- if no interceptor binding type is givenIllegalArgumentException
- if two instances of the same interceptor binding type are givenIllegalArgumentException
- if an instance of an annotation that is not an interceptor binding type is givenIllegalStateException
- if called during application initialization, before theAfterBeanDiscovery
event is fired.
-
isScope
Test the given annotation type to determine if it is a scope type.- Parameters:
annotationType
- the annotation type- Returns:
- true if the annotation type is a scope type
-
isNormalScope
Test the given annotation type to determine if it is a normal scope type.- Parameters:
annotationType
- the annotation type- Returns:
true
if the annotation type is a normal scope type
-
isQualifier
Test the given annotation type to determine if it is a qualifier type.- Parameters:
annotationType
- the annotation type- Returns:
true
if the annotation type is a qualifier type
-
isStereotype
Test the given annotation type to determine if it is a stereotype.- Parameters:
annotationType
- the annotation type- Returns:
true
if the annotation type is a stereotype
-
isInterceptorBinding
Test the given annotation type to determine if it is an interceptor binding type .- Parameters:
annotationType
- the annotation to test- Returns:
true
if the annotation type is a interceptor binding type
-
getContext
Obtains an active context object for the given scope .- Parameters:
scopeType
- the scope- Returns:
- the context object
- Throws:
ContextNotActiveException
- if there is no active context object for the given scopeIllegalArgumentException
- if there is more than one active context object for the given scope
-
getContexts
Obtains all context objects, active and inactive, for the given scope.- Parameters:
scopeType
- the scope; must not benull
- Returns:
- immutable collection of context objects; never
null
, but may be empty
-
getEvent
Returns an instance of Event with specified typejava.lang.Object
and specified qualifier@Default
It allows typesafe synchronous or asynchronous event firing without injection ofEvent
built-in bean requirement.- Returns:
- a new
Event
object whose event type isObject
and qualifier@Default
- Since:
- 2.0
-
createInstance
Obtains anInstance
object to access to beans instances.The returned
Instance
object can only access instances of beans that are available for injection in the module or library containing the class into which theBeanManager
/BeanContainer
was injected or, in the Jakarta EE environment, the Jakarta EE component from whose JNDI environment namespace theBeanContainer
was obtained, according to the rules of typesafe resolution.Instances of dependent scoped beans obtained with this
Instance
must be explicitly destroyed by callingInstance.destroy(Object)
If no qualifier is passed to
Instance.select(java.lang.annotation.Annotation...)
method, the@Default
qualifier is assumed.- Returns:
- an
Instance
object to request beans instances - Throws:
IllegalStateException
- if called during application initialization, before theAfterDeploymentValidation
event is fired.- Since:
- 2.0
-
isMatchingBean
boolean isMatchingBean(Set<Type> beanTypes, Set<Annotation> beanQualifiers, Type requiredType, Set<Annotation> requiredQualifiers) Returnstrue
if a bean with given bean types and qualifiers would be assignable to an injection point with given required type and required qualifiers,false
otherwise.In line with the specification for beans and typesafe resolution, the set of
beanTypes
is considered to always includejava.lang.Object
. Types inbeanTypes
that are not legal bean types are ignored. The set ofbeanQualifiers
is considered to always include@Any
and also include@Default
when it contains no other qualifier but@Any
and@Named
. The set ofrequiredQualifiers
is considered to include@Default
when it is empty.Throws
IllegalArgumentException
if any of the arguments isnull
or if any of thebeanQualifiers
orrequiredQualifiers
is not a qualifier annotation.- Parameters:
beanTypes
- bean types of a bean; must not benull
beanQualifiers
- qualifiers of a bean; must not benull
requiredType
- required type of an injection point; must not benull
requiredQualifiers
- required qualifiers of an injection point; must not benull
- Returns:
true
if a bean with given bean types and qualifiers would be assignable to an injection point with given required type and required qualifiers,false
otherwise
-
isMatchingEvent
boolean isMatchingEvent(Type specifiedType, Set<Annotation> specifiedQualifiers, Type observedEventType, Set<Annotation> observedEventQualifiers) Returnstrue
if an event with given specified type and specified qualifiers would match an observer method with given observed event type and observed event qualifiers,false
otherwise.For the purpose of observer resolution, the
specifiedType
is used as the event type directly (because there is no event object in this API) andspecifiedQualifiers
are used as event qualifiers. In line with the specification for events and observer resolution, the set of event qualifiers is considered to always include@Any
. Further, an empty set ofspecifiedQualifiers
is considered to match the set ofobservedEventQualifiers
which contains@Default
.Throws
IllegalArgumentException
if any of the arguments isnull
, if thespecifiedType
contains a type variable, or if any of thespecifiedQualifiers
orobservedEventQualifiers
is not a qualifier annotation.- Parameters:
specifiedType
- specified type of an event; must not benull
specifiedQualifiers
- specified qualifiers of an event; must not benull
observedEventType
- observed event type of an observer method; must not benull
observedEventQualifiers
- observed event qualifiers on an observer method; must not benull
- Returns:
true
if an event object with given type and qualifiers would result in notifying an observer method with given observed event type and observed event qualifiers,false
otherwise
-