javax.enterprise.inject.spi

## Interface ProcessProducer<T,X>

- Type Parameters:
    `T` - The bean class of the bean that declares the producer method or field
    `X` - The return type of the producer method or the type of the producer field

      public interface ProcessProducer<T,X>

  The container fires an event of this type for each producer method or field of each enabled bean, including resources.

  Any observer of this event is permitted to wrap and/or replace the `Producer`. The container must use the final value of this property, after all observers have been called, whenever it calls the producer or disposer.

  For example, this observer decorates the `Producer` for the all producer methods and field of type `EntityManager`.

       void decorateEntityManager(@Observes ProcessProducer<?, EntityManager> pp) {
           pit.setProducer(decorate(pp.getProducer()));
       }

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

  Author:
    David Allen
  See Also:
    `Producer`

- - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `addDefinitionError(Throwable t)` Registers a definition error with the container, causing the container to abort deployment after bean discovery is complete.
    `AnnotatedMember<T>` | `getAnnotatedMember()` Returns the `AnnotatedField` representing the producer field or the `AnnotatedMethod` representing the producer method.
    `Producer<X>` | `getProducer()` Returns the `Producer` object that will be used by the container to call the producer method or read the producer field.
    `void` | `setProducer(Producer<X> producer)` Replaces the `Producer` object that will be used by the container to call the producer method or read the producer field.

- - ### Method Detail

    - #### getAnnotatedMember

          AnnotatedMember<T> getAnnotatedMember()

      Returns the `AnnotatedField` representing the producer field or the `AnnotatedMethod` representing the producer method.
      Returns:
        the `AnnotatedMember` representing the producer
      Throws:
        `IllegalStateException` - if called outside of the observer method invocation

    - #### getProducer

          Producer<X> getProducer()

      Returns the `Producer` object that will be used by the container to call the producer method or read the producer field.
      Returns:
        the `Producer` invoker object used by the container
      Throws:
        `IllegalStateException` - if called outside of the observer method invocation

    - #### setProducer

          void setProducer(Producer<X> producer)

      Replaces the `Producer` object that will be used by the container to call the producer method or read the producer field.
      Parameters:
        `producer` - the new `Producer` object to use
      Throws:
        `IllegalStateException` - if called outside of the observer method invocation

    - #### addDefinitionError

          void addDefinitionError(Throwable t)

      Registers a definition error with the container, causing the container to abort deployment after bean discovery is complete.
      Parameters:
        `t` - The definition error to register as a `Throwable`
      Throws:
        `IllegalStateException` - if called outside of the observer method invocation

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