Interface BeanManager



  • public interface BeanManager

    Allows a portable extension to interact directly with the container. Provides operations for obtaining contextual references for beans, along with many other operations of use to portable extensions.

    Any bean may obtain an instance of BeanManager by injecting it:

     @Inject
     BeanManager manager;
     

    Java EE components may obtain an instance of BeanManager from JNDI by looking up the name java:comp/BeanManager.

    Any operation of BeanManager may be called at any time during the execution of the application.

    • 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 The container is permitted to define a non-portable mode in which getReference(Bean, Type, CreationalContext) may be called from an observer of the AfterBeanDiscovery event.
      • 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 was injected or the Java EE component from whose JNDI environment namespace the BeanManager was obtained, according to the rules of typesafe resolution. If no qualifiers are given, the default qualifier is assumed.
        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 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 AfterDeploymentValidation event is fired The container is permitted to define a non-portable mode in which getBeans(Type, Annotation...) may be called from an observer of the AfterBeanDiscovery event.
      • 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 was injected or the Java EE component from whose JNDI environment namespace the BeanManager was obtained, according to the rules of EL name resolution.
        Parameters:
        name - the EL name
        Returns:
        the resulting set of beans
        Throws:
        java.lang.IllegalStateException - if called during application initialization, before the AfterDeploymentValidation event is fired The container is permitted to define a non-portable mode in which getBeans(String) may be called from an observer of the AfterBeanDiscovery event.
      • getPassivationCapableBean

        Bean<?> getPassivationCapableBean​(java.lang.String id)
        Returns the PassivationCapable bean with the given identifier.
        Parameters:
        id - the identifier
        Returns:
        a Bean that implements PassivationCapable and has the given identifier, or a null value if there is no such bean
        Throws:
        java.lang.IllegalStateException - if called during application initialization, before the AfterDeploymentValidation event is fired The container is permitted to define a non-portable mode in which getPassivationCapableBean(String) may be called from an observer of the AfterBeanDiscovery event.
      • resolve

        <X> Bean<? extends X> resolve​(java.util.Set<Bean<? extends X>> beans)
        Apply the ambiguous dependency resolution rules to a set of beans.
        Type Parameters:
        X - a common type of the beans
        Parameters:
        beans - a set of beans of the given type
        Throws:
        AmbiguousResolutionException - if the ambiguous dependency resolution rules fail
        java.lang.IllegalStateException - if called during application initialization, before the AfterDeploymentValidation event is fired The container is permitted to define a non-portable mode in which resolve(Set) may be called from an observer of the AfterBeanDiscovery event.
      • fireEvent

        void fireEvent​(java.lang.Object event,
                       java.lang.annotation.Annotation... qualifiers)
        Fire an event and notify observers.
        Parameters:
        event - the event object
        qualifiers - the event qualifiers
        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 qualifier type are given
        java.lang.IllegalArgumentException - if an instance of an annotation that is not a qualifier type is given
        java.lang.IllegalArgumentException - if the runtime type of the event object is assignable to the type of a container lifecycle event
        ObserverException - if a notified observer throws a checked exception, it will be wrapped and rethrown as an (unchecked) ObserverException
      • resolveObserverMethods

        <T> java.util.Set<ObserverMethod<? super T>> resolveObserverMethods​(T event,
                                                                            java.lang.annotation.Annotation... qualifiers)
        Return the set of observers for an event.
        Type Parameters:
        T - the type of the event
        Parameters:
        event - the event object
        qualifiers - the event qualifiers
        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 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 AfterDeploymentValidation event is fired The container is permitted to define a non-portable mode in which resolveObserverMethods(Object, Annotation...) may be called from an observer of the AfterBeanDiscovery event.
      • resolveDecorators

        java.util.List<Decorator<?>> resolveDecorators​(java.util.Set<java.lang.reflect.Type> types,
                                                       java.lang.annotation.Annotation... qualifiers)
        Return an ordered list of decorators for a set of bean types and a set of qualifiers and which are enabled in the module or library containing the class into which the BeanManager was injected or the Java EE component from whose JNDI environment namespace the BeanManager was obtained.
        Parameters:
        types - the set of bean types of the decorated bean
        qualifiers - the qualifiers declared by the decorated bean
        Returns:
        the resulting set of decorators
        Throws:
        java.lang.IllegalArgumentException - if the set of bean types is empty
        java.lang.IllegalArgumentException - if an annotation which is not a binding type is passed
        java.lang.IllegalArgumentException - if two instances of the same binding type are passed
        java.lang.IllegalStateException - if called during application initialization, before the AfterDeploymentValidation event is fired The container is permitted to define a non-portable mode in which resolveDecorators(Set, Annotation...) may be called from an observer of the AfterBeanDiscovery event.
      • 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 was injected or the Java EE component from whose JNDI environment namespace the BeanManager was obtained.
        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 AfterDeploymentValidation event is fired The container is permitted to define a non-portable mode in which resolveInterceptors(InterceptionType, Annotation...) may be called from an observer of the AfterBeanDiscovery event.
      • 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
      • isPassivatingScope

        boolean isPassivatingScope​(java.lang.Class<? extends java.lang.annotation.Annotation> annotationType)
        Test the given annotation type to determine if it is a passivating scope type.
        Parameters:
        annotationType - the annotation type
        Returns:
        true if the annotation type is a passivating 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
      • 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
      • 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
      • getInterceptorBindingDefinition

        java.util.Set<java.lang.annotation.Annotation> getInterceptorBindingDefinition​(java.lang.Class<? extends java.lang.annotation.Annotation> bindingType)
        Obtains the set of meta-annotations for a certain interceptor binding type .
        Parameters:
        bindingType - the interceptor binding type
        Returns:
        the set of meta-annotations
      • getStereotypeDefinition

        java.util.Set<java.lang.annotation.Annotation> getStereotypeDefinition​(java.lang.Class<? extends java.lang.annotation.Annotation> stereotype)
        Obtains meta-annotations for a certain stereotype.
        Parameters:
        stereotype - the stereotype
        Returns:
        the set of meta-annotations
      • areQualifiersEquivalent

        boolean areQualifiersEquivalent​(java.lang.annotation.Annotation qualifier1,
                                        java.lang.annotation.Annotation qualifier2)
        Determine if two qualifiers are considered equivalent for the purposes of typesafe resolution, taking into account any members annotated with Nonbinding.
        Parameters:
        a1 - a qualifier to check
        a2 - a qualifier to check
        Returns:
        true if the two qualifiers are equivalent, otherwise false
        Since:
        1.1
      • areInterceptorBindingsEquivalent

        boolean areInterceptorBindingsEquivalent​(java.lang.annotation.Annotation interceptorBinding1,
                                                 java.lang.annotation.Annotation interceptorBinding2)
        Determine if two interceptor bindings are considered equivalent for the purposes of typesafe resolution, taking into account any members annotated with Nonbinding.
        Parameters:
        a1 - an interceptor binding to check
        a2 - an interceptor binding to check
        Returns:
        true if the two interceptor bindings are equivalent, otherwise false
        Since:
        1.1
      • getQualifierHashCode

        int getQualifierHashCode​(java.lang.annotation.Annotation qualifier)
        Determine the hash code of a qualifier, using the JDK algorithm for determining an annotation hash code, ignoring any members annotated with Nonbinding.
        Parameters:
        qualifier - the qualifier to consider
        Returns:
        the hashCode for the qualifier
        Since:
        1.1
      • getInterceptorBindingHashCode

        int getInterceptorBindingHashCode​(java.lang.annotation.Annotation interceptorBinding)
        Determine the hash code of an interceptor binding, using the JDK algorithm for determining an annotation hash code, ignoring any members annotated with Nonbinding.
        Parameters:
        interceptorBinding - the interceptor binding to consider
        Returns:
        the hashCode for the interceptor binding
        Since:
        1.1
      • 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
      • createAnnotatedType

        <T> AnnotatedType<T> createAnnotatedType​(java.lang.Class<T> type)
        Obtain an AnnotatedType that may be used to read the annotations of the given class or interface.
        Type Parameters:
        T - the class or interface
        Parameters:
        type - the Class object
        Returns:
        the AnnotatedType
      • createInjectionTarget

        <T> InjectionTarget<T> createInjectionTarget​(AnnotatedType<T> type)

        Obtains an InjectionTarget for the given AnnotatedType. The container ignores the annotations and types declared by the elements of the actual Java class and uses the metadata provided via the Annotated interface instead.

        This method is deprecated from CDI 1.1 and getInjectionTargetFactory(AnnotatedType) should be used instead.

        Type Parameters:
        T - the type
        Parameters:
        type - the AnnotatedType
        Throws:
        java.lang.IllegalArgumentException - if there is a definition error associated with any injection point of the type
      • getProducerFactory

        <X> ProducerFactory<X> getProducerFactory​(AnnotatedField<? super X> field,
                                                  Bean<X> declaringBean)

        An implementation of ProducerFactory that provides container created Producer instances for the given field.

        This factory can be wrapped to add behavior to container created producers.

        Parameters:
        field - the field to create the producer factory for
        declaringBean - the bean declaring the producer. May be null if the producer is static or the declaring object is non-contextual
        Returns:
        the producer factory for the field
        Since:
        1.1
      • getProducerFactory

        <X> ProducerFactory<X> getProducerFactory​(AnnotatedMethod<? super X> method,
                                                  Bean<X> declaringBean)

        An implementation of ProducerFactory that provides container created Producer instances for the given method.

        This factory can be wrapped to add behavior to container created producers.

        Parameters:
        method - the method to create the producer factory for
        declaringBean - the bean declaring the producer. May be null if the producer is static or the declaring object is non-contextual
        Returns:
        the producer factory for the method
        Since:
        1.1
      • createBeanAttributes

        <T> BeanAttributes<T> createBeanAttributes​(AnnotatedType<T> type)
        Obtains a BeanAttributes for the given AnnotatedType. The container ignores the annotations and types declared by the elements of the actual Java class and uses the metadata provided via the Annotated interface instead.
        Type Parameters:
        T - the type
        Parameters:
        type - the AnnotatedType
        Returns:
        a container provided implementation of InjectionTarget
        Since:
        1.1
      • getExtension

        <T extends Extension> T getExtension​(java.lang.Class<T> extensionClass)
        Obtains the container's instance of an Extension class declared in META-INF/services.
        Type Parameters:
        T - the type of the extension
        Parameters:
        extensionClass - the type of the extension class
        Returns:
        the extension instance
        Throws:
        java.lang.IllegalArgumentException - if the container has no instance of the given class
        Since:
        1.1