Interface BeanContainer
-
- All Known Subinterfaces:
BeanManager
public interface BeanContainerBeanContaineris a superclass ofBeanManagercontaining 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
BeanContainerby injecting it:@Inject BeanContainer container;
- 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 aCreationalContextfor the given contextual type, or for a non-contextual object.Instance<Object>createInstance()Obtains anInstanceobject to access to beans instances.Set<Bean<?>>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/BeanContainerwas injected or, in the Jakarta EE environment, the Jakarta EE component from whose JNDI environment namespace theBeanManager/BeanContainerwas obtained, according to the rules of typesafe resolution.Set<Bean<?>>getBeans(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/BeanContainerwas injected or, in the Jakarta EE environment, the Jakarta EE component from whose JNDI environment namespace theBeanManager/BeanContainerwas obtained, according to the rules of EL name resolution.ContextgetContext(Class<? extends Annotation> scopeType)Obtains an active context object for the given scope .Event<Object>getEvent()Returns an instance of Event with specified typejava.lang.Objectand specified qualifier@DefaultIt allows typesafe synchronous or asynchronous event firing without injection ofEventbuilt-in bean requirement.ObjectgetReference(Bean<?> bean, Type beanType, CreationalContext<?> ctx)Obtains a contextual reference for a certain bean and a certain bean type of the bean.booleanisInterceptorBinding(Class<? extends Annotation> annotationType)Test the given annotation type to determine if it is an interceptor binding type .booleanisNormalScope(Class<? extends Annotation> annotationType)Test the given annotation type to determine if it is a normal scope type.booleanisQualifier(Class<? extends Annotation> annotationType)Test the given annotation type to determine if it is a qualifier type.booleanisScope(Class<? extends Annotation> annotationType)Test the given annotation type to determine if it is a scope type.booleanisStereotype(Class<? extends Annotation> annotationType)Test the given annotation type to determine if it is a stereotype.<X> Bean<? extends X>resolve(Set<Bean<? extends X>> beans)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/BeanContainerwas injected or, in the Jakarta EE environment, the Jakarta EE component from whose JNDI environment namespace theBeanManager/BeanContainerwas obtained.<T> Set<ObserverMethod<? super T>>resolveObserverMethods(T event, Annotation... qualifiers)Return an ordered set of observer methods for an event.
-
-
-
Method Detail
-
getReference
Object getReference(Bean<?> bean, Type beanType, CreationalContext<?> ctx)
Obtains a contextual reference for a certain bean and a certain bean type of the bean.
- Parameters:
bean- theBeanobject representing the beanbeanType- a bean type that must be implemented by any client proxy that is returnedctx- aCreationalContextthat may be used to destroy any object with scopeDependentthat 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 theAfterDeploymentValidationevent is fired.
-
createCreationalContext
<T> CreationalContext<T> createCreationalContext(Contextual<T> contextual)
Obtain an instance of aCreationalContextfor 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
Set<Bean<?>> 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/BeanContainerwas injected or, in the Jakarta EE environment, the Jakarta EE component from whose JNDI environment namespace theBeanManager/BeanContainerwas 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
AfterBeanDiscoveryevent observer, this method will only return beans discovered by the container before theAfterBeanDiscoveryevent 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 theAfterBeanDiscoveryevent is fired.
-
getBeans
Set<Bean<?>> getBeans(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/BeanContainerwas injected or, in the Jakarta EE environment, the Jakarta EE component from whose JNDI environment namespace theBeanManager/BeanContainerwas obtained, according to the rules of EL name resolution.Note that when called during invocation of an
AfterBeanDiscoveryevent observer, this method will only return beans discovered by the container before theAfterBeanDiscoveryevent is fired.- Parameters:
name- the EL name- Returns:
- the resulting set of beans
- Throws:
IllegalStateException- if called during application initialization, before theAfterBeanDiscoveryevent is fired.
-
resolve
<X> Bean<? extends X> resolve(Set<Bean<? extends X>> beans)
Apply the ambiguous dependency resolution rules to a set of beans.Note that when called during invocation of an
AfterBeanDiscoveryevent observer, this method will only return beans discovered by the container before theAfterBeanDiscoveryevent 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 theAfterBeanDiscoveryevent is fired.
-
resolveObserverMethods
<T> Set<ObserverMethod<? super T>> resolveObserverMethods(T event, Annotation... qualifiers)
Return an ordered set of observer methods for an event.Note that when called during invocation of an
AfterBeanDiscoveryevent observer, this method will only return observers discovered by the container before theAfterBeanDiscoveryevent 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 theAfterBeanDiscoveryevent is fired.
-
resolveInterceptors
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/BeanContainerwas injected or, in the Jakarta EE environment, the Jakarta EE component from whose JNDI environment namespace theBeanManager/BeanContainerwas obtained.Note that when called during invocation of an
AfterBeanDiscoveryevent observer, this method will only return interceptors discovered by the container before theAfterBeanDiscoveryevent 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 theAfterBeanDiscoveryevent is fired.
-
isScope
boolean isScope(Class<? extends 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(Class<? extends Annotation> annotationType)
Test the given annotation type to determine if it is a normal scope type.- Parameters:
annotationType- the annotation type- Returns:
trueif the annotation type is a normal scope type
-
isQualifier
boolean isQualifier(Class<? extends Annotation> annotationType)
Test the given annotation type to determine if it is a qualifier type.- Parameters:
annotationType- the annotation type- Returns:
trueif the annotation type is a qualifier type
-
isStereotype
boolean isStereotype(Class<? extends Annotation> annotationType)
Test the given annotation type to determine if it is a stereotype.- Parameters:
annotationType- the annotation type- Returns:
trueif the annotation type is a stereotype
-
isInterceptorBinding
boolean isInterceptorBinding(Class<? extends Annotation> annotationType)
Test the given annotation type to determine if it is an interceptor binding type .- Parameters:
annotationType- the annotation to test- Returns:
trueif the annotation type is a interceptor binding type
-
getContext
Context getContext(Class<? extends 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 scopeIllegalArgumentException- if there is more than one active context object for the given scope
-
getEvent
Event<Object> getEvent()
Returns an instance of Event with specified typejava.lang.Objectand specified qualifier@DefaultIt allows typesafe synchronous or asynchronous event firing without injection ofEventbuilt-in bean requirement.- Returns:
- a new
Eventobject whose event type isObjectand qualifier@Default - Since:
- 2.0
-
createInstance
Instance<Object> createInstance()
Obtains anInstanceobject to access to beans instances.The returned
Instanceobject can only access instances of beans that are available for injection in the module or library containing the class into which theBeanManager/BeanContainerwas injected or, in the Jakarta EE environment, the Jakarta EE component from whose JNDI environment namespace theBeanContainerwas obtained, according to the rules of typesafe resolution.Note that when called during invocation of an
AfterBeanDiscoveryevent observer, theInstancereturned by this method will only give access to instances of beans discovered by the container before theAfterBeanDiscoveryevent is fired.Instances of dependent scoped beans obtained with this
Instancemust be explicitly destroyed by callingInstance.destroy(Object)If no qualifier is passed to
Instance.select(java.lang.annotation.Annotation...)method, the@Defaultqualifier is assumed.- Returns:
- an
Instanceobject to request beans instances - Throws:
IllegalStateException- if called during application initialization, before theAfterDeploymentValidationevent is fired.- Since:
- 2.0
-
-