-
- All Known Subinterfaces:
BeanManager
public interface BeanContainer
BeanContainer
is a superclass ofBeanManager
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
All Methods Instance Methods Abstract Methods Modifier and Type Method Description <T> CreationalContext<T>
createCreationalContext(Contextual<T> contextual)
Obtain an instance of aCreationalContext
for the given contextual type, or for a non-contextual object.Instance<java.lang.Object>
createInstance()
Obtains anInstance
object to access to beans instances.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 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.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 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.Context
getContext(java.lang.Class<? extends java.lang.annotation.Annotation> scopeType)
Obtains an active context object for the given scope .java.util.Collection<Context>
getContexts(java.lang.Class<? extends java.lang.annotation.Annotation> scopeType)
Obtains all context objects, active and inactive, for the given scope.Event<java.lang.Object>
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.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 theBeanManager
/BeanContainer
was injected or, in the Jakarta EE environment, the Jakarta EE component from whose JNDI environment namespace theBeanManager
/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.
-
-
-
Method Detail
-
getReference
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.
- 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:
java.lang.IllegalArgumentException
- if the given type is not a bean type of the given beanjava.lang.IllegalStateException
- if called during application initialization, before theAfterDeploymentValidation
event is fired.
-
createCreationalContext
<T> CreationalContext<T> createCreationalContext(Contextual<T> contextual)
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
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 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:
java.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 theAfterBeanDiscovery
event is fired.
-
getBeans
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 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:
java.lang.IllegalStateException
- if called during application initialization, before theAfterBeanDiscovery
event is fired.
-
resolve
<X> Bean<? extends X> resolve(java.util.Set<Bean<? extends X>> beans)
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 failjava.lang.IllegalStateException
- if called during application initialization, before theAfterBeanDiscovery
event is fired.
-
resolveObserverMethods
<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.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:
java.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 theAfterBeanDiscovery
event is fired.
-
resolveInterceptors
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 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:
java.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 theAfterBeanDiscovery
event is fired.
-
isScope
boolean isScope(java.lang.Class<? extends java.lang.annotation.Annotation> annotationType)
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
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.- Parameters:
annotationType
- the annotation type- Returns:
true
if the annotation type is a normal scope type
-
isQualifier
boolean isQualifier(java.lang.Class<? extends java.lang.annotation.Annotation> annotationType)
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
boolean isStereotype(java.lang.Class<? extends java.lang.annotation.Annotation> annotationType)
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
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 .- Parameters:
annotationType
- the annotation to test- Returns:
true
if the annotation type is a interceptor binding type
-
getContext
Context getContext(java.lang.Class<? extends java.lang.annotation.Annotation> scopeType)
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 scopejava.lang.IllegalArgumentException
- if there is more than one active context object for the given scope
-
getContexts
java.util.Collection<Context> getContexts(java.lang.Class<? extends java.lang.annotation.Annotation> scopeType)
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
Event<java.lang.Object> 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
Instance<java.lang.Object> 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:
java.lang.IllegalStateException
- if called during application initialization, before theAfterDeploymentValidation
event is fired.- Since:
- 2.0
-
-