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;
     
    Author:
    Matej Novotny
    • 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 - 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:
        IllegalArgumentException - if the given type is not a bean type of the given bean
        IllegalStateException - if called during application initialization, before the AfterDeploymentValidation event is fired.
      • 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 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:
        IllegalArgumentException - if the given type represents a type variable
        IllegalArgumentException - if two instances of the same non repeating qualifier type are given
        IllegalArgumentException - if an instance of an annotation that is not a qualifier type is given
        IllegalStateException - if called during application initialization, before the AfterBeanDiscovery event 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 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:
        IllegalStateException - if called during application initialization, before the AfterBeanDiscovery event 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 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
        IllegalStateException - if called during application initialization, before the AfterBeanDiscovery event 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 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:
        IllegalArgumentException - if no interceptor binding type is given
        IllegalArgumentException - if two instances of the same interceptor binding type are given
        IllegalArgumentException - if an instance of an annotation that is not an interceptor binding type is given
        IllegalStateException - if called during application initialization, before the AfterBeanDiscovery event 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:
        true if 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:
        true if 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:
        true if the annotation type is a stereotype
      • getEvent

        Event<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<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.

        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.

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