Module jakarta.cdi

Interface AfterBeanDiscovery


  • public interface AfterBeanDiscovery

    The event type of the second event fired by the container when it has fully completed the bean discovery process, validated that there are no definition errors relating to the discovered beans, and registered Bean and ObserverMethod objects for the discovered beans, but before detecting deployment problems.

    A portable extension may take advantage of this event to register beans, interceptors, decorators, observer methods and custom context objects with the container.

         void afterBeanDiscovery(@Observes AfterBeanDiscovery event, BeanManager manager) { ... }
     

    If any observer method of the AfterBeanDiscovery event throws an exception, the exception is treated as a definition error by the container.

    CDI Lite implementations are not required to provide support for Portable Extensions.

    Author:
    David Allen, Antoine Sabot-Durand
    • Method Detail

      • addDefinitionError

        void addDefinitionError​(java.lang.Throwable t)
        Registers a definition error with the container, causing the container to abort deployment after all observers have been notified.
        Parameters:
        t - The definition error as a Throwable
        Throws:
        java.lang.IllegalStateException - if called outside of the observer method invocation
      • addBean

        void addBean​(Bean<?> bean)
        Fires an event of type ProcessBean containing the given Bean and then registers the Bean with the container, thereby making a bean which is not an interceptor nor a decorator available for injection into other beans. The given Bean may implement Interceptor or Decorator.
        Parameters:
        bean - The bean to add to the deployment
        Throws:
        java.lang.IllegalStateException - if called outside of the observer method invocation
      • addBean

        <T> BeanConfigurator<T> addBean()
        Obtains a new BeanConfigurator to configure a new Bean and add it at the end of the observer invocation. It will then fire an event of type ProcessBean containing the built Bean from this configuration and then register it with the container, thereby making it available for injection into other beans. Each call returns a new BeanConfigurator.
        Type Parameters:
        T - type of bean
        Returns:
        a non reusable BeanConfigurator to configure the bean to add
        Throws:
        java.lang.IllegalStateException - if called outside of the observer method invocation
        Since:
        2.0
      • addObserverMethod

        void addObserverMethod​(ObserverMethod<?> observerMethod)
        Fires an event of type ProcessObserverMethod containing the given ObserverMethod and then registers the ObserverMethod with the container, thereby making it available for event notifications.
        Parameters:
        observerMethod - The custom observer method to add to the deployment
        Throws:
        java.lang.IllegalStateException - if called outside of the observer method invocation
      • addObserverMethod

        <T> ObserverMethodConfigurator<T> addObserverMethod()
        obtains a new ObserverMethodConfigurator to configure a new ObserverMethod and add it at the end of the observer invocation. It will then fire an event of type ProcessObserverMethod containing the built ObserverMethod from this configuration and then registers the ObserverMethod with the container, thereby making it available for event notifications. Each call returns a new ObserverMethodConfigurator.
        Type Parameters:
        T - type of the event the configured ObserverMethod will observe
        Returns:
        a non reusable ObserverMethodConfigurator instance
        Throws:
        java.lang.IllegalStateException - if called outside of the observer method invocation
        Since:
        2.0
      • addContext

        void addContext​(Context context)
        Registers a custom Context object with the container.
        Parameters:
        context - The custom context to add to the deployment
        Throws:
        java.lang.IllegalStateException - if called outside of the observer method invocation
      • getAnnotatedType

        <T> AnnotatedType<T> getAnnotatedType​(java.lang.Class<T> type,
                                              java.lang.String id)
        Obtain the AnnotatedType that may be used to read the annotations of the given class or interface as defined during container initialization.
        Type Parameters:
        T - the class or interface
        Parameters:
        type - the Class object
        id - the type identifier. If null, the fully qualifier class name of type is used
        Returns:
        the AnnotatedType
        Throws:
        java.lang.IllegalStateException - if called outside of the observer method invocation
        Since:
        1.1
      • getAnnotatedTypes

        <T> java.lang.Iterable<AnnotatedType<T>> getAnnotatedTypes​(java.lang.Class<T> type)
        Obtain the AnnotatedTypes that may be used to read the annotations of the given class or interface as defined during container initialization.
        Type Parameters:
        T - the class or interface
        Parameters:
        type - the Class object
        Returns:
        the AnnotatedTypes
        Throws:
        java.lang.IllegalStateException - if called outside of the observer method invocation
        Since:
        1.1