I've also been looking at this and my solution is a little more radical. Basically, one of the issues with Merlin is that Merlin strictly controls what you can get from the ServiceManager while Fortress and Phoenix are much more liberal. This stems from what Stephen has appropriately identified as the mixed roles of the ServiceManager: it's both a ServiceDiscovery component and a DependencyProvider component.
It's not an issue, it's a choice. While the choice makes sense, it is a pain in the *** that it is enforced because we used to make the choice differently. It's also a completely orthogonal issue (fortunately)...because...
2. Allow either type III IoC or (for backwards compatibility) the ServiceManager for supplying dependencies. Use of the contructor is very secure and we have a great model for how to do that in PicoContainer.
whatever is in control of the 'new' (in the current case its always Class.newInstance()) needs to be configurable. This thing is currently the SimpleFactory (though with pico its an adapter :D).
Supplying arguments to the constructor by retrieving them from the servicemanager is a no-brainer. That's fine until something sweeter is in place :D
-- cheers,
- Leo Simons
----------------------------------------------------------------------- Weblog -- http://leosimons.com/ IoC Component Glue -- http://jicarilla.org/ Articles & Opinions -- http://lsd.student.utwente.nl/jicarilla/Articles ----------------------------------------------------------------------- "We started off trying to set up a small anarchist community, but people wouldn't obey the rules." -- Alan Bennett
-- cheers,
- Leo Simons
----------------------------------------------------------------------- Weblog -- http://leosimons.com/ IoC Component Glue -- http://jicarilla.org/ Articles & Opinions -- http://lsd.student.utwente.nl/jicarilla/Articles ----------------------------------------------------------------------- "We started off trying to set up a small anarchist community, but people wouldn't obey the rules." -- Alan Bennett
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
