Peter Donald wrote: > Howdy ho, > > At 06:01 PM 6/13/2002 +0200, you wrote: > >> Or, are you saying we should make the startup phase immutable and >> not extendable, but allow for access level extensions ? > > > +1 > > I spent ages trying to get this work. We went through several iterations > of Phoenix trying to enable this but it was an absolute PITA and massive > headache to maintain. The way I would recomend you implement container > specific behaviour (like Instrumentation etc) is via a > Container-specific context. > > ie Phoenix has a BlockContext via which it exports extra information to > blocks (if they want it) and also will support extra functionality in > the future. > > Note that I haven't read your proposal yet but my guess would be > something like the following would work > > interface CocoonContext extend Context > { > InstrumentPoint getPoint(String name); > CocoonSession getSession(); > File getWorkDirectory(); > ///insert whatever actual parameters you need > } > > Then your instrumentable component just does something like > > abstract class AbstractCocoonInstrumentable > implements Intrumentable, COntextualizable > > void context( Context c ) > { > CocoonContext cc = (CocoonContext)c; > setPoints( cc.getPoints() ); //Or however instrumnentable works > } > > I have used the same pattern over and over again and it works well. What > do you think ? Does it work for you?
Not for me :-( We have at least 2 types of interfaces: - command interfaces - service provider interfaces The first type are Initializable, Startable, Disposable, etc.., and no Context-ComponentManager can supplant them. The second type are supplantable by context-ComponentManager. In my app, I extended the lifecycle to add a Saveable (ie save()), which cannot be switched with a Context. I think we need to address the need for an easy system to enhance the Lifecycle. In James we will possibly need the Mailet interface in the lifecycle. How? -- Nicola Ken Barozzi [EMAIL PROTECTED] - verba volant, scripta manent - (discussions get forgotten, just code remains) --------------------------------------------------------------------- -- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>