[cdi-dev] Order of the new system events

Mark Struberg struberg at yahoo.de
Mon Jan 7 17:43:07 EST 2013


Arne and me have discussed the order of the new system events and came to a point where the order is not well defined yet.

After ProcessAnnotatedType we need to build up the Beans.

In this process the following events are involved

* ProcessInjectionTarget
* ProcessInjectionPoint

* ProcessBeanAttributes
* ProcessBean

Now the following underlying conditions needs to be met:

* InjectionPoint has a method #getBean()

* ProcessBean does only read information thus it will be the last in the chain.

The following questions are open:

* If ProcessInjectionPoint gets fired before ProcessInjectionTarget then we would fire it for InjectionPoints which probably later get removed. And it will not get fired for freshly added InjectionPoints.
* If ProcessInjectionTarget gets fired before ProcessInjectionPoint then this might be not that worse.

* When will the initial BeanAttributes get created from the AnnotatedType? In the spec it seems like it should get fired just before the ProcessBean, but that doesn't make sense in our opinion. It imo should get fired just right at the beginning and the rest of the processing (e.g. ProcessInjectionTarget) should get this information via the getBean().

Thus we finally figured that the order which makes the most sense would be:

1.) .. create a Bean<T> with the initial information taken from the AnnotatedType

2.) fire ProcessBeanAttributes<T> and apply the results eventually
3.) fire ProcessInjectionTarget and apply it if changed
4.) fire ProcessInjectionPoint for each InjectionTarget#getInjectionPoints()
5.) fire ProcessBean

We think that would make sense, wdyt?

arne and strub

More information about the cdi-dev mailing list