Dain Sundstrom wrote:

On Mar 1, 2006, at 10:06 AM, Dain Sundstrom wrote:

On Mar 1, 2006, at 7:27 AM, David Jencks wrote:

On Mar 1, 2006, at 3:56 AM, Gianny Damour wrote:

Hi,

I think that we need to split ModuleBuilder.addGBeans into two methods: addGBeans and initENC. addGBeans implementations perform GBean registrations as per the current approach. initENC is invoked after the addGBeans phase and implementations use this callback to build the ENC.

The issue with the current implementation is that it is impossible to bind a GBean reference to the ENC if the referenced GBean is defined by a module which has not yet been processed by addGBeans. For instance, if a module A references a GBean added by a module B and if module A is processed before module B, then it is impossible to locate the referenced GBean as it has not yet been added to the registry.

If there is no objection, I will start to work on it in the next couple of days.


I would rather see us reduce the number of module builder phases than increase them :-) So far we have dealt with this problem by registering a gbean data for anything that could possibly be referenced in the ENC during the initContext phase. I'm also worried that changes of this nature could make merging the configid/1.1 changes into trunk almost impossible.


Big +1 from me


Should clarify... that was a big +1 to David Jencks. These changes will make configid/1.1 almost impossible to merge. Also, with the configid changes, we are simplifying (i.e., changing) the way references work, and my guess is you will no longer want to make the proposed change.

Actually, I understood it this way :).

If the simplified way of resolving references being implemented on the 1.1 branch defers the resolution of GBean references until after the registrations of all the GBeans added by the builders, then I assume that we no longer want this change.

Anyway, after having thought about it a little bit more, I realized it was possible to defer the resolution of GBean references w/o having to add an extra method. ENCConfigBuilder.buildComponentContext adds to the EARContext a command to build the component context and returns an empty Map. In EARConfigBuilder.buildConfiguration, after the addGBeans phase, one retrieves and executes the command previously added to the EARContext. It is quite a pity that I did not think about it before my email :(

Thanks,
Gianny


-dain



Reply via email to