public interface BeanContainer
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;
Modifier and Type | Method and Description |
---|---|
<T> CreationalContext<T> |
createCreationalContext(Contextual<T> contextual)
Obtain an instance of a
CreationalContext for the given
contextual type, or for a non-contextual object. |
Instance<java.lang.Object> |
createInstance()
Obtains an
Instance object to access to beans instances. |
java.util.Set<Bean<?>> |
getBeans(java.lang.String name)
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 the
BeanManager /BeanContainer was injected or, in the Jakarta EE
environment, the Jakarta EE component from whose JNDI environment namespace the
BeanManager /BeanContainer was obtained, according to the rules of EL name resolution. |
java.util.Set<Bean<?>> |
getBeans(java.lang.reflect.Type beanType,
java.lang.annotation.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 the
BeanManager /BeanContainer was injected or,
in the Jakarta EE environment, the Jakarta EE component from whose JNDI environment namespace the
BeanManager /BeanContainer was obtained, according to the rules of typesafe resolution. |
Context |
getContext(java.lang.Class<? extends java.lang.annotation.Annotation> scopeType)
Obtains an active context object for the given
scope .
|
Event<java.lang.Object> |
getEvent()
Returns an instance of Event with specified type
java.lang.Object and specified qualifier @Default
It allows typesafe synchronous or asynchronous event firing without injection of Event built-in bean requirement. |
java.lang.Object |
getReference(Bean<?> bean,
java.lang.reflect.Type beanType,
CreationalContext<?> ctx)
Obtains a contextual reference for a certain bean and a certain bean type of the bean.
|
boolean |
isInterceptorBinding(java.lang.Class<? extends java.lang.annotation.Annotation> annotationType)
Test the given annotation type to determine if it is an interceptor
binding type .
|
boolean |
isNormalScope(java.lang.Class<? extends java.lang.annotation.Annotation> annotationType)
Test the given annotation type to determine if it is a normal scope type.
|
boolean |
isQualifier(java.lang.Class<? extends java.lang.annotation.Annotation> annotationType)
Test the given annotation type to determine if it is a qualifier type.
|
boolean |
isScope(java.lang.Class<? extends java.lang.annotation.Annotation> annotationType)
Test the given annotation type to determine if it is a scope type.
|
boolean |
isStereotype(java.lang.Class<? extends java.lang.annotation.Annotation> annotationType)
Test the given annotation type to determine if it is a stereotype.
|
<X> Bean<? extends X> |
resolve(java.util.Set<Bean<? extends X>> beans)
Apply the ambiguous dependency resolution rules to a set of beans.
|
java.util.List<Interceptor<?>> |
resolveInterceptors(InterceptionType type,
java.lang.annotation.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 the
BeanManager /BeanContainer was injected or, in the Jakarta EE environment,
the Jakarta EE component from whose JNDI environment namespace the
BeanManager /BeanContainer was obtained. |
<T> java.util.Set<ObserverMethod<? super T>> |
resolveObserverMethods(T event,
java.lang.annotation.Annotation... qualifiers)
Return an ordered set of observer methods for an event.
|
java.lang.Object getReference(Bean<?> bean, java.lang.reflect.Type beanType, CreationalContext<?> ctx)
Obtains a contextual reference for a certain bean and a certain bean type of the bean.
bean
- the Bean
object representing the beanbeanType
- a bean type that must be implemented by any client proxy that is returnedctx
- a CreationalContext
that may be used to destroy any object with scope
Dependent
that is createdjava.lang.IllegalArgumentException
- if the given type is not a bean type of the given beanjava.lang.IllegalStateException
- if called during application initialization, before the AfterDeploymentValidation
event is fired.<T> CreationalContext<T> createCreationalContext(Contextual<T> contextual)
CreationalContext
for the given
contextual type, or for a non-contextual object.T
- type of the instancecontextual
- the Contextual
, or a null value in the case of a non-contextual
objectCreationalContext
java.util.Set<Bean<?>> getBeans(java.lang.reflect.Type beanType, java.lang.annotation.Annotation... qualifiers)
BeanManager
/BeanContainer
was injected or,
in the Jakarta EE environment, the Jakarta EE component from whose JNDI environment namespace the
BeanManager
/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 the AfterBeanDiscovery
event is fired.
beanType
- the required bean typequalifiers
- the required qualifiersjava.lang.IllegalArgumentException
- if the given type represents a type variablejava.lang.IllegalArgumentException
- if two instances of the same non repeating qualifier type are givenjava.lang.IllegalArgumentException
- if an instance of an annotation that is not a qualifier type is givenjava.lang.IllegalStateException
- if called during application initialization, before the AfterBeanDiscovery
event is fired.java.util.Set<Bean<?>> getBeans(java.lang.String name)
BeanManager
/BeanContainer
was injected or, in the Jakarta EE
environment, the Jakarta EE component from whose JNDI environment namespace the
BeanManager
/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 the AfterBeanDiscovery
event is fired.
name
- the EL namejava.lang.IllegalStateException
- if called during application initialization, before the AfterBeanDiscovery
event is fired.<X> Bean<? extends X> resolve(java.util.Set<Bean<? extends X>> beans)
Note that when called during invocation of an AfterBeanDiscovery
event observer,
this method will only return beans discovered by the container before the AfterBeanDiscovery
event is fired.
X
- a common type of the beansbeans
- a set of beans of the given typeAmbiguousResolutionException
- if the ambiguous dependency resolution rules failjava.lang.IllegalStateException
- if called during application initialization, before the AfterBeanDiscovery
event is fired.<T> java.util.Set<ObserverMethod<? super T>> resolveObserverMethods(T event, java.lang.annotation.Annotation... qualifiers)
Note that when called during invocation of an AfterBeanDiscovery
event observer,
this method will only return observers discovered by the container before the AfterBeanDiscovery
event is fired.
T
- the type of the eventevent
- the event objectqualifiers
- the event qualifiersjava.lang.IllegalArgumentException
- if the runtime type of the event object contains a type variablejava.lang.IllegalArgumentException
- if two instances of the same non repeating qualifier type are givenjava.lang.IllegalArgumentException
- if an instance of an annotation that is not a qualifier type is givenjava.lang.IllegalStateException
- if called during application initialization, before the AfterBeanDiscovery
event is fired.java.util.List<Interceptor<?>> resolveInterceptors(InterceptionType type, java.lang.annotation.Annotation... interceptorBindings)
BeanManager
/BeanContainer
was injected or, in the Jakarta EE environment,
the Jakarta EE component from whose JNDI environment namespace the
BeanManager
/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 the AfterBeanDiscovery
event is
fired.
type
- the type of the interceptioninterceptorBindings
- the interceptor bindingsjava.lang.IllegalArgumentException
- if no interceptor binding type is givenjava.lang.IllegalArgumentException
- if two instances of the same interceptor binding type are givenjava.lang.IllegalArgumentException
- if an instance of an annotation that is not an interceptor binding type is givenjava.lang.IllegalStateException
- if called during application initialization, before the AfterBeanDiscovery
event is fired.boolean isScope(java.lang.Class<? extends java.lang.annotation.Annotation> annotationType)
annotationType
- the annotation typeboolean isNormalScope(java.lang.Class<? extends java.lang.annotation.Annotation> annotationType)
annotationType
- the annotation typetrue
if the annotation type is a normal scope typeboolean isQualifier(java.lang.Class<? extends java.lang.annotation.Annotation> annotationType)
annotationType
- the annotation typetrue
if the annotation type is a qualifier typeboolean isStereotype(java.lang.Class<? extends java.lang.annotation.Annotation> annotationType)
annotationType
- the annotation typetrue
if the annotation type is a stereotypeboolean isInterceptorBinding(java.lang.Class<? extends java.lang.annotation.Annotation> annotationType)
annotationType
- the annotation to testtrue
if the annotation type is a interceptor binding
typeContext getContext(java.lang.Class<? extends java.lang.annotation.Annotation> scopeType)
scopeType
- the scopeContextNotActiveException
- if there is no active context object for the given scopejava.lang.IllegalArgumentException
- if there is more than one active context object for the given scopeEvent<java.lang.Object> getEvent()
java.lang.Object
and specified qualifier @Default
It allows typesafe synchronous or asynchronous event firing without injection of Event
built-in bean requirement.Event
object whose event type is Object
and qualifier @Default
Instance<java.lang.Object> createInstance()
Instance
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 the BeanManager
/BeanContainer
was injected
or, in the Jakarta EE environment, the Jakarta EE component from whose JNDI environment namespace the
BeanContainer
was obtained, according to the rules of typesafe resolution.
Note that when called during invocation of an AfterBeanDiscovery
event observer,
the Instance
returned by this method will only give access to instances of beans discovered by the container
before the AfterBeanDiscovery
event is fired.
Instances of dependent scoped beans obtained with this Instance
must be explicitly destroyed by calling Instance.destroy(Object)
If no qualifier is passed to Instance.select(java.lang.annotation.Annotation...)
method, the @Default
qualifier is assumed.
Instance
object to request beans instancesjava.lang.IllegalStateException
- if called during application initialization, before the AfterDeploymentValidation
event is fired.