So the innocent looking i/o modules give us a quite a number of problems if we want to build an OM from them.
Yes, I agree.
So what do I propose instead? If we think of it the only thing we need is access to objects (and preferably script (SL) and expression language (EL) friendly objects). Then it is the task for the EL or SL to do the accessing. If the object is read or write able or booth will be seen from its get and/or set methods or whatever the reflection engine in the EL or SL supports.Sounds like a good solution for me. Now, these "modules" will be Avalon components, so I think we should remove the objectModel parameter from the interface. (An avalon component can get the object model if it's contextualizable) This simplifies the interface even more and makes calling it easier:
So instead of i/o modules it would be enough with "modules", (but we should really find a better name). And the interface could look like:
interface Module { String ROLE = Module.class.getName();
Object getObject(Map objectModel); }
thats all. So much simpler than i/o modules and we get better behaviour and SoC at the same time.
WDYT?
interface Module {
String ROLE = Module.class.getName();Object getObject(); }
Hmm, I can't help myself but this interface looks a little bit too simple for me :)
Carsten
-- Carsten Ziegeler - Open Source Group, S&N AG http://www.s-und-n.de http://www.osoco.org/weblogs/rael/
