javax.enterprise.inject.spi

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

  Author:
    David Allen

- - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `addBean(Bean<?> bean)` Fires an event of type `ProcessBean` containing the given `Bean` and then registers the `Bean` with the container, thereby making it available for injection into other beans.
    `void` | `addContext(Context context)` Registers a custom `Context` object with the container.
    `void` | `addDefinitionError(Throwable t)` Registers a definition error with the container, causing the container to abort deployment after all observers have been notified.
    `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.
    `<T> AnnotatedType<T>` | `getAnnotatedType(Class<T> type, String id)` Obtain the `AnnotatedType` that may be used to read the annotations of the given class or interface as defined during container initialization.
    `<T> Iterable<AnnotatedType<T>>` | `getAnnotatedTypes(Class<T> type)` Obtain the `AnnotatedType`s that may be used to read the annotations of the given class or interface as defined during container initialization.

- - ### Method Detail

    - #### addDefinitionError

          void addDefinitionError(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:
        `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 it available for injection into other beans. The given `Bean` may implement `Interceptor` or `Decorator`.
      Parameters:
        `bean` - The bean to add to the deployment
      Throws:
        `IllegalStateException` - if called outside of the observer method invocation

    - #### 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:
        `IllegalStateException` - if called outside of the observer method invocation

    - #### addContext

          void addContext(Context context)

      Registers a custom `Context` object with the container.
      Parameters:
        `context` - The custom context to add to the deployment
      Throws:
        `IllegalStateException` - if called outside of the observer method invocation

    - #### getAnnotatedType

          <T> AnnotatedType<T> getAnnotatedType(Class<T> type,
                                              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:
        `IllegalStateException` - if called outside of the observer method invocation
      Since:
        1.1

    - #### getAnnotatedTypes

          <T> Iterable<AnnotatedType<T>> getAnnotatedTypes(Class<T> type)

      Obtain the `AnnotatedType`s 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 `AnnotatedType`s
      Throws:
        `IllegalStateException` - if called outside of the observer method invocation
      Since:
        1.1

Copyright © 1996-2013, Oracle and/or its affiliates. All Rights Reserved. Use is subject to license terms.