I would like to make RoleManager have an additional method--unfortunately that 
is not
backwards compatible.  I highly doubt that it would affect any existing 
projects as
the DefaultRoleManager is sufficient for most people.

The method I want to add is "String[] getManagedRoleNames()" so that the 
ExcaliburComponentManager
does not load new Components during runtime--and they are all done at init time.

There are a couple of issues with this approach, however:

What if a Role is managed by a parent ComponentManager?  this is a simple 
check...
What if the role is never needed by a running system?  this is not easily 
determinable.

This brings up another question:

*Should* ExcaliburComponentManager implicitly build Components on demand if the
entries are in the RoleManager?  The tradeoff is that allowing Components to be
instantiated at runtime allows the configuration file size be minimized.  By
requiring all components to be explicitly declared, you will end up with a 
number
of configuration entries like this:

<parser/>

I find it to be a useful feature in order to reduce configuration file 
verbosity.


VOTE ON PLAN OF ATTACK

Add the non-backwards compatible method to RoleManager

interface RoleManager
{
    // ..... Skip already declared methods .....

    String[] getManagedRoleNames();
}

This allows the ExcaliburComponentManager to build all the necessary Components
at intialization time instead of during run time.  It also allows the Lookup
method to be simpler.

Alternatively, I can subinterface the RoleManager with the method I need, 
testing
for the specialization in ExcaliburComponentManger--but this will not allow the
lookup method to be cleaned up....

Last alternative is a cleanroom implementation of everything--not supporting the
deprecated Loggable interface....

--

"They that give up essential liberty to obtain a little temporary safety
 deserve neither liberty nor safety."
                - Benjamin Franklin


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



Reply via email to