Uploaded image for project: 'CDI Specification Issues'
  1. CDI Specification Issues
  2. CDI-328

SPI for creating producers broken

    XMLWordPrintable

Details

    • Bug
    • Resolution: Done
    • Blocker
    • 1.1.FD
    • 1.1.PFD
    • Portable Extensions
    • None
    • Release Notes

    Description

      CDI-268 introduces a set of factories to deal with the chicken-egg problem when creating Beans and Producers/InjectionTargets.

      Unlike InjectionTargetFactory, the ProducerFactory interface does not address the problem properly.

      In order to create a Producer implementation for a producer field/method, the following ingredients are needed:

      • an AnnotatedField / AnnotatedMethod
      • a declaring bean (bean for the class the producer field/method is declared on - the field/method is invoked on instances of the declaring bean) . Declaring bean does not need to be specified if the field/method is static
      • bean for which the producer is created - this is needed in order for Producer.getInjectionPoints.getBean() to return the right thing. The bean is optional an may not be specified if the Producer is created for a non-contextual object

      The following (slightly modified) SPI should handle all the requirements:

      public interface ProducerFactory<X> {
      
          public <T> Producer<T> createProducer(Bean<T> bean);
      }
      
      public interface BeanManager {
      
          public <X> ProducerFactory<X> getProducerFactory(AnnotatedField<? super X> field, Bean<X> declaringBean);
      
          public <X> ProducerFactory<X> getProducerFactory(AnnotatedMethod<? super X> method, Bean<X> declaringBean);
      
          public <T, X> Bean<T> createBean(BeanAttributes<T> attributes, Class<X> beanClass, ProducerFactory<X> producerFactory);
      }
      

      Notice the additional declaringBean parameter for getProducerFactory() and modified type parameters in createBean() and ProducerFactory.

      Attachments

        Activity

          People

            pmuiratbleepbleep Pete Muir (Inactive)
            rhn-engineering-jharting Jozef Hartinger
            Votes:
            0 Vote for this issue
            Watchers:
            6 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: