Class BeanManagerImpl

  • All Implemented Interfaces:
    jakarta.enterprise.inject.spi.BeanContainer, jakarta.enterprise.inject.spi.BeanManager, Referenceable

    public class BeanManagerImpl
    extends Object
    implements jakarta.enterprise.inject.spi.BeanManager, Referenceable
    Implementation of the BeanManager contract of the web beans container.

    It is written as thread-safe.

    Version:
    $Rev$ $Date$
    See Also:
    BeanManager
    • Constructor Detail

      • BeanManagerImpl

        public BeanManagerImpl​(WebBeansContext webBeansContext)
        Creates a new BeanManager instance. Called by the system. Do not use outside of the system.
    • Method Detail

      • putProducerForJavaEeComponent

        public <T> void putProducerForJavaEeComponent​(Class<T> javaEeComponentClass,
                                                      jakarta.enterprise.inject.spi.Producer<T> wrapper)
      • getProducerForJavaEeComponent

        public <T> jakarta.enterprise.inject.spi.Producer<T> getProducerForJavaEeComponent​(Class<T> javaEeComponentClass)
      • getErrorStack

        public ErrorStack getErrorStack()
      • getUnmanagedClassBeans

        public ConcurrentMap<Class<?>,​jakarta.enterprise.inject.spi.Bean> getUnmanagedClassBeans()
      • getInjectionResolver

        public InjectionResolver getInjectionResolver()
        Gets injection resolver.
        Returns:
        injection resolver
      • getContext

        public jakarta.enterprise.context.spi.Context getContext​(Class<? extends Annotation> scopeType)
        Gets the active context for the given scope type.
        Specified by:
        getContext in interface jakarta.enterprise.inject.spi.BeanContainer
        Parameters:
        scopeType - scope type of the context
        Throws:
        jakarta.enterprise.context.ContextNotActiveException - if no active context
        IllegalStateException - if more than one active context
      • createInstance

        public jakarta.enterprise.inject.Instance<Object> createInstance()
        Specified by:
        createInstance in interface jakarta.enterprise.inject.spi.BeanContainer
      • addBean

        public jakarta.enterprise.inject.spi.BeanManager addBean​(jakarta.enterprise.inject.spi.Bean<?> newBean)
        Add new bean to the BeanManager. This will also set OWBs inUse status.
        Parameters:
        newBean - new bean instance
        Returns:
        the this manager
      • addInternalBean

        public <T> jakarta.enterprise.inject.spi.BeanManager addInternalBean​(jakarta.enterprise.inject.spi.Bean<T> newBean)
        This method is reserved for adding 'internal beans' like e.g. a BeanManagerBean,
        Parameters:
        newBean -
        Returns:
      • addPassivationInfo

        public void addPassivationInfo​(jakarta.enterprise.inject.spi.Bean<?> bean)
                                throws jakarta.enterprise.inject.spi.DefinitionException
        Check if the bean is has a passivation id and add it to the id store.
        Parameters:
        bean -
        Throws:
        jakarta.enterprise.inject.spi.DefinitionException - if the id is not unique.
      • addContext

        public jakarta.enterprise.inject.spi.BeanManager addContext​(jakarta.enterprise.context.spi.Context context)
      • wrapCustomContext

        public jakarta.enterprise.context.spi.Context wrapCustomContext​(jakarta.enterprise.context.spi.Context context)
        If the context is passivating then we need to wrap it into a version which uses the SerializableBeanVault
      • fireEvent

        public void fireEvent​(Object event,
                              Annotation... bindings)
        Deprecated.
        This method got deprecated in CDI-2.0. Users should use getEvent() instead.
      • getEvent

        public jakarta.enterprise.event.Event<Object> getEvent()
        Specified by:
        getEvent in interface jakarta.enterprise.inject.spi.BeanContainer
      • fireEvent

        public void fireEvent​(Object event,
                              boolean containerEvent,
                              Annotation... bindings)
      • fireContextLifecyleEvent

        public void fireContextLifecyleEvent​(Object payload,
                                             Annotation lifecycleQualifier)
        Fire @Initialized and @Destroyed events, but only IF any observers do exist.
      • getComponents

        public Set<jakarta.enterprise.inject.spi.Bean<?>> getComponents()
      • resolveDecorators

        public List<jakarta.enterprise.inject.spi.Decorator<?>> resolveDecorators​(Set<Type> types,
                                                                                  Annotation... bindingTypes)
        Specified by:
        resolveDecorators in interface jakarta.enterprise.inject.spi.BeanManager
      • unsafeResolveDecorators

        public List<jakarta.enterprise.inject.spi.Decorator<?>> unsafeResolveDecorators​(Set<Type> types,
                                                                                        Annotation[] bindingTypes)
      • resolveInterceptors

        public List<jakarta.enterprise.inject.spi.Interceptor<?>> resolveInterceptors​(jakarta.enterprise.inject.spi.InterceptionType type,
                                                                                      Annotation... interceptorBindings)
        Specified by:
        resolveInterceptors in interface jakarta.enterprise.inject.spi.BeanContainer
      • getBeans

        public Set<jakarta.enterprise.inject.spi.Bean<?>> getBeans()
      • createAnnotatedType

        public <T> jakarta.enterprise.inject.spi.AnnotatedType<T> createAnnotatedType​(Class<T> type)
        Specified by:
        createAnnotatedType in interface jakarta.enterprise.inject.spi.BeanManager
      • createCreationalContext

        public <T> CreationalContextImpl<T> createCreationalContext​(jakarta.enterprise.context.spi.Contextual<T> contextual)
        Specified by:
        createCreationalContext in interface jakarta.enterprise.inject.spi.BeanContainer
      • getBeans

        public Set<jakarta.enterprise.inject.spi.Bean<?>> getBeans​(Type beanType,
                                                                   Annotation... bindings)
        Specified by:
        getBeans in interface jakarta.enterprise.inject.spi.BeanContainer
      • getBeans

        public Set<jakarta.enterprise.inject.spi.Bean<?>> getBeans​(String name)
        Specified by:
        getBeans in interface jakarta.enterprise.inject.spi.BeanContainer
      • getELResolver

        public jakarta.el.ELResolver getELResolver()
        Specified by:
        getELResolver in interface jakarta.enterprise.inject.spi.BeanManager
      • getInjectableReference

        public Object getInjectableReference​(jakarta.enterprise.inject.spi.InjectionPoint injectionPoint,
                                             jakarta.enterprise.context.spi.CreationalContext<?> ownerCreationalContext)
        Specified by:
        getInjectableReference in interface jakarta.enterprise.inject.spi.BeanManager
      • getInterceptorBindingDefinition

        public Set<Annotation> getInterceptorBindingDefinition​(Class<? extends Annotation> binding)
        Specified by:
        getInterceptorBindingDefinition in interface jakarta.enterprise.inject.spi.BeanManager
      • getPassivationCapableBean

        public jakarta.enterprise.inject.spi.Bean<?> getPassivationCapableBean​(String id)
        Specified by:
        getPassivationCapableBean in interface jakarta.enterprise.inject.spi.BeanManager
      • getReference

        public Object getReference​(jakarta.enterprise.inject.spi.Bean<?> providedBean,
                                   Type beanType,
                                   jakarta.enterprise.context.spi.CreationalContext<?> creationalContext)
        Specified by:
        getReference in interface jakarta.enterprise.inject.spi.BeanContainer
      • createBeanAttributes

        public jakarta.enterprise.inject.spi.BeanAttributes<?> createBeanAttributes​(jakarta.enterprise.inject.spi.AnnotatedMember<?> member)
        Specified by:
        createBeanAttributes in interface jakarta.enterprise.inject.spi.BeanManager
      • createInjectionPoint

        public jakarta.enterprise.inject.spi.InjectionPoint createInjectionPoint​(jakarta.enterprise.inject.spi.AnnotatedField<?> field)
        Specified by:
        createInjectionPoint in interface jakarta.enterprise.inject.spi.BeanManager
      • createInjectionPoint

        public jakarta.enterprise.inject.spi.InjectionPoint createInjectionPoint​(jakarta.enterprise.inject.spi.AnnotatedParameter<?> parameter)
        Specified by:
        createInjectionPoint in interface jakarta.enterprise.inject.spi.BeanManager
      • getProducerFactory

        public <X> jakarta.enterprise.inject.spi.ProducerFactory<X> getProducerFactory​(jakarta.enterprise.inject.spi.AnnotatedField<? super X> field,
                                                                                       jakarta.enterprise.inject.spi.Bean<X> bean)
        Specified by:
        getProducerFactory in interface jakarta.enterprise.inject.spi.BeanManager
      • getProducerFactory

        public <X> jakarta.enterprise.inject.spi.ProducerFactory<X> getProducerFactory​(jakarta.enterprise.inject.spi.AnnotatedMethod<? super X> method,
                                                                                       jakarta.enterprise.inject.spi.Bean<X> bean)
        Specified by:
        getProducerFactory in interface jakarta.enterprise.inject.spi.BeanManager
      • getInjectionTargetFactory

        public <X> jakarta.enterprise.inject.spi.InjectionTargetFactory<X> getInjectionTargetFactory​(jakarta.enterprise.inject.spi.AnnotatedType<X> type)
        Specified by:
        getInjectionTargetFactory in interface jakarta.enterprise.inject.spi.BeanManager
      • createBean

        public <T> jakarta.enterprise.inject.spi.Bean<T> createBean​(jakarta.enterprise.inject.spi.BeanAttributes<T> attributes,
                                                                    Class<T> type,
                                                                    jakarta.enterprise.inject.spi.InjectionTargetFactory<T> factory)
        Specified by:
        createBean in interface jakarta.enterprise.inject.spi.BeanManager
      • getStereotypeDefinition

        public Set<Annotation> getStereotypeDefinition​(Class<? extends Annotation> stereotype)
        Specified by:
        getStereotypeDefinition in interface jakarta.enterprise.inject.spi.BeanManager
      • isQualifier

        public boolean isQualifier​(Class<? extends Annotation> annotationType)
        Specified by:
        isQualifier in interface jakarta.enterprise.inject.spi.BeanContainer
      • isInterceptorBinding

        public boolean isInterceptorBinding​(Class<? extends Annotation> annotationType)
        Specified by:
        isInterceptorBinding in interface jakarta.enterprise.inject.spi.BeanContainer
      • isScope

        public boolean isScope​(Class<? extends Annotation> annotationType)
        Specified by:
        isScope in interface jakarta.enterprise.inject.spi.BeanContainer
      • isNormalScope

        public boolean isNormalScope​(Class<? extends Annotation> scopeType)
        Specified by:
        isNormalScope in interface jakarta.enterprise.inject.spi.BeanContainer
      • isPassivatingScope

        public boolean isPassivatingScope​(Class<? extends Annotation> annotationType)
        Specified by:
        isPassivatingScope in interface jakarta.enterprise.inject.spi.BeanManager
      • isStereotype

        public boolean isStereotype​(Class<? extends Annotation> annotationType)
        Specified by:
        isStereotype in interface jakarta.enterprise.inject.spi.BeanContainer
      • areInterceptorBindingsEquivalent

        public boolean areInterceptorBindingsEquivalent​(Annotation annotation1,
                                                        Annotation annotation2)
        Specified by:
        areInterceptorBindingsEquivalent in interface jakarta.enterprise.inject.spi.BeanManager
      • areQualifiersEquivalent

        public boolean areQualifiersEquivalent​(Annotation annotation1,
                                               Annotation annotation2)
        Specified by:
        areQualifiersEquivalent in interface jakarta.enterprise.inject.spi.BeanManager
      • getInterceptorBindingHashCode

        public int getInterceptorBindingHashCode​(Annotation annotation)
        Specified by:
        getInterceptorBindingHashCode in interface jakarta.enterprise.inject.spi.BeanManager
      • getQualifierHashCode

        public int getQualifierHashCode​(Annotation annotation)
        Specified by:
        getQualifierHashCode in interface jakarta.enterprise.inject.spi.BeanManager
      • createBeanAttributes

        public <T> jakarta.enterprise.inject.spi.BeanAttributes<T> createBeanAttributes​(jakarta.enterprise.inject.spi.AnnotatedType<T> type)
        Specified by:
        createBeanAttributes in interface jakarta.enterprise.inject.spi.BeanManager
      • createBean

        public <T,​X> jakarta.enterprise.inject.spi.Bean<T> createBean​(jakarta.enterprise.inject.spi.BeanAttributes<T> attributes,
                                                                            Class<X> type,
                                                                            jakarta.enterprise.inject.spi.ProducerFactory<X> factory)
        Specified by:
        createBean in interface jakarta.enterprise.inject.spi.BeanManager
      • getExtension

        public <T extends jakarta.enterprise.inject.spi.Extension> T getExtension​(Class<T> type)
        Specified by:
        getExtension in interface jakarta.enterprise.inject.spi.BeanManager
      • resolve

        public <X> jakarta.enterprise.inject.spi.Bean<? extends X> resolve​(Set<jakarta.enterprise.inject.spi.Bean<? extends X>> beans)
        Specified by:
        resolve in interface jakarta.enterprise.inject.spi.BeanContainer
      • createInterceptionFactory

        public <T> jakarta.enterprise.inject.spi.InterceptionFactory<T> createInterceptionFactory​(jakarta.enterprise.context.spi.CreationalContext<T> creationalContext,
                                                                                                  Class<T> clazz)
        Specified by:
        createInterceptionFactory in interface jakarta.enterprise.inject.spi.BeanManager
      • validate

        public void validate​(jakarta.enterprise.inject.spi.InjectionPoint injectionPoint)
        Specified by:
        validate in interface jakarta.enterprise.inject.spi.BeanManager
      • createInjectionTarget

        @Deprecated
        public <T> jakarta.enterprise.inject.spi.InjectionTarget<T> createInjectionTarget​(jakarta.enterprise.inject.spi.AnnotatedType<T> type)
        Deprecated.
        This method got deprecated in CDI-1.1 and removed in CDI-4.0. Use getInjectionTargetFactory(AnnotatedType) instead.
      • resolveObserverMethods

        public <T> Set<jakarta.enterprise.inject.spi.ObserverMethod<? super T>> resolveObserverMethods​(T event,
                                                                                                       Annotation... qualifiers)
        Specified by:
        resolveObserverMethods in interface jakarta.enterprise.inject.spi.BeanContainer
        Specified by:
        resolveObserverMethods in interface jakarta.enterprise.inject.spi.BeanManager
      • resolveObserverMethods

        public <T> Set<jakarta.enterprise.inject.spi.ObserverMethod<? super T>> resolveObserverMethods​(T event,
                                                                                                       EventMetadataImpl metadata)
      • wrapExpressionFactory

        public jakarta.el.ExpressionFactory wrapExpressionFactory​(jakarta.el.ExpressionFactory expressionFactory)
        Specified by:
        wrapExpressionFactory in interface jakarta.enterprise.inject.spi.BeanManager
      • addAdditionalQualifier

        public void addAdditionalQualifier​(Class<? extends Annotation> qualifier)
      • addAdditionalQualifier

        public void addAdditionalQualifier​(jakarta.enterprise.inject.spi.AnnotatedType<? extends Annotation> qualifier)
      • addAdditionalAnnotatedType

        public void addAdditionalAnnotatedType​(Object extension,
                                               jakarta.enterprise.inject.spi.AnnotatedType<?> annotatedType)
      • addAdditionalAnnotatedType

        public <T> void addAdditionalAnnotatedType​(Object extension,
                                                   jakarta.enterprise.inject.spi.AnnotatedType<T> inAnnotatedType,
                                                   String id)
      • removeAdditionalAnnotatedType

        public void removeAdditionalAnnotatedType​(jakarta.enterprise.inject.spi.AnnotatedType<?> annotatedType)
      • removeAdditionalAnnotatedType

        public void removeAdditionalAnnotatedType​(jakarta.enterprise.inject.spi.AnnotatedType<?> annotatedType,
                                                  String id)
      • getAdditionalAnnotatedTypeQualifiers

        public Map<Class<?>,​jakarta.enterprise.inject.spi.AnnotatedType<? extends Annotation>> getAdditionalAnnotatedTypeQualifiers()
      • addAdditionalScope

        public void addAdditionalScope​(ExternalScope additionalScope)
      • getAdditionalAnnotatedTypes

        public Collection<jakarta.enterprise.inject.spi.AnnotatedType<?>> getAdditionalAnnotatedTypes()
      • getAdditionalAnnotatedType

        public <T> jakarta.enterprise.inject.spi.AnnotatedType<T> getAdditionalAnnotatedType​(Class<T> type,
                                                                                             String id)
      • getId

        public <T> String getId​(Class<T> type,
                                jakarta.enterprise.inject.spi.AnnotatedType<T> at)
      • getUserAnnotatedTypes

        public <T> Collection<jakarta.enterprise.inject.spi.AnnotatedType<T>> getUserAnnotatedTypes​(Class<T> type)
      • getAnnotatedTypes

        public <T> Iterable<jakarta.enterprise.inject.spi.AnnotatedType<T>> getAnnotatedTypes​(Class<T> type)
      • clear

        public void clear()
      • clearCacheProxies

        public void clearCacheProxies()
      • isInUse

        public boolean isInUse()
      • isAfterDeploymentValidationFired

        public boolean isAfterDeploymentValidationFired()
      • setAfterDeploymentValidationFired

        public void setAfterDeploymentValidationFired​(boolean afterDeploymentValidationFired)
      • setAfterBeanDiscoveryStart

        public void setAfterBeanDiscoveryStart()
      • setAfterBeanDiscoveryDone

        public void setAfterBeanDiscoveryDone()
      • isAfterBeanDiscoveryDone

        public boolean isAfterBeanDiscoveryDone()
      • isAfterBeanDiscovery

        public boolean isAfterBeanDiscovery()