Marcus Crafter wrote:
> 
> Hi All,
> 
>       Hope all is well.
>       
>       In our project I recently delved into the world of creating custom
>       markers specific for our particular application domain. I'd
>       thought that IoC/SoC was an excellent programming paradigm, 
> and could
>       be applied to our application in a greater context, not just within
>       the standard avalon interfaces.
>       
>       It turned out to be easy to begin with but difficult to finish, and
>       there seem to be lots of issues, at least to me :)
>       
>       What I wanted to do was define a custom marker interface 
> that would be
>       checked for each time a component was accessed (ie. during 
> lookup()),
>       and have a method defined in that particular interface called each
>       time, appropriately.
>       
+10, this is really a very usefull feature!

>       The solution was to extend ECM's lookup() method in a subclass,
>       however the first problem I found was that most application code
>       specifies 'new ExcaliburComponentManager()' directly and needs to be
>       changed to use a derived class or made configurable to accept an
>       arbitrary component manager class, sometimes in several places
>       (eg. Cocoon, with my patch #8614 in bugzilla).
>       
Yes, subclassing the ECM has another drawback if you have a CM hierarchy
(as Cocoon has :( ): if you simply override lookup() in your own CM you
delegate the lookup to the real CM which is either the parent class or
a parent CM in the hierarchy. But when you do a simple super.lookup()
you don't know who created the component.
If it is a parent CM, this component is completly initialized, if it
was the parent class, then we can apply our own marker interfaces.
This took me some time to get it working...

>       The other issue I realized later is ECS, select() also needs to be
>       extended, however this class incurs the same problem as ECM but more
>       often as selectors are specified in roles files and java code. It's 
>       also more of an issue if a custom selector has already been written
>       (eg. Cocoon, with it's ExtendedComponentSelector).
>       
>       So, subclassing doesn't seem to be the solution.
> 
Yupp.

>       Another issue is that it seems to be quite difficult to insert a
>       custom marker mid-way into a component's startup/destruction phase.
>       I know this one won't come up as often as the others above, 
> but as an
>       example Lief had this problem supporting the Instrumentable
>       marker interface.
> 
>       I think we still need a way to ensure the defined order of the
>       standard avalon startup/destruction interfaces, but it could be 
>       useful to include the ability to insert custom ones during
>       component startup (or should we consider the startup/destruction
>       process to be immutable ?).
>       
>       I've taken a look at both the ECM/ECS and Fortress code, but both
>       don't seem to cover this space just yet (?). I'm looking for ideas
>       about how to add such functionality to our existing classes that
>       doesn't require excessive subclassing of handlers or component
>       managers.
>       
+5

Carsten

>       Any ideas ? thoughts ?
>       
>       I'm currently mulling over the thought of a potential solution that
>       involves modifying component handler/factories so that they 
> can accept
>       a configurable startup/destruction sequence, but since I'm still an
>       avalon novice it would be great to hear comments/thoughts ? :)
>       


--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to