Module jakarta.cdi

Interface BeanContainer

  • All Known Subinterfaces:
    BeanManager

    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;
     
    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 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.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.
      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.
      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 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.
    • 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 - the Bean object representing the bean
        beanType - a bean type that must be implemented by any client proxy that is returned
        ctx - a CreationalContext that may be used to destroy any object with scope Dependent 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 bean
        java.lang.IllegalStateException - if called during application initialization, before the AfterDeploymentValidation event is fired.
      • 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 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. 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.

        Parameters:
        beanType - the required bean type
        qualifiers - the required qualifiers
        Returns:
        the resulting set of beans
        Throws:
        java.lang.IllegalArgumentException - if the given type represents a type variable
        java.lang.IllegalArgumentException - if two instances of the same non repeating qualifier type are given
        java.lang.IllegalArgumentException - if an instance of an annotation that is not a qualifier type is given
        java.lang.IllegalStateException - if called during application initialization, before the AfterBeanDiscovery 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 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.

        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.

        Parameters:
        name - the EL name
        Returns:
        the resulting set of beans
        Throws:
        java.lang.IllegalStateException - if called during application initialization, before the AfterBeanDiscovery 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 the AfterBeanDiscovery 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 fail
        java.lang.IllegalStateException - if called during application initialization, before the AfterBeanDiscovery 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 the AfterBeanDiscovery event is fired.

        Type Parameters:
        T - the type of the event
        Parameters:
        event - the event object
        qualifiers - 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 variable
        java.lang.IllegalArgumentException - if two instances of the same non repeating qualifier type are given
        java.lang.IllegalArgumentException - if an instance of an annotation that is not a qualifier type is given
        java.lang.IllegalStateException - if called during application initialization, before the AfterBeanDiscovery 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 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.

        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.

        Parameters:
        type - the type of the interception
        interceptorBindings - the interceptor bindings
        Returns:
        the resulting set of interceptors
        Throws:
        java.lang.IllegalArgumentException - if no interceptor binding type is given
        java.lang.IllegalArgumentException - if two instances of the same interceptor binding type are given
        java.lang.IllegalArgumentException - if an instance of an annotation that is not an interceptor binding type is given
        java.lang.IllegalStateException - if called during application initialization, before the AfterBeanDiscovery 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 scope
        java.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 be null
        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 type java.lang.Object and specified qualifier @Default It allows typesafe synchronous or asynchronous event firing without injection of Event built-in bean requirement.
        Returns:
        a new Event object whose event type is Object and qualifier @Default
        Since:
        2.0
      • createInstance

        Instance<java.lang.Object> createInstance()
        Obtains an 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.

        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.

        Returns:
        an Instance object to request beans instances
        Throws:
        java.lang.IllegalStateException - if called during application initialization, before the AfterDeploymentValidation event is fired.
        Since:
        2.0