Thanks, Stephen/Niclas! Tried it out, works beautifully... ..this is all that I wanted, looks like I was going about it in a very circuitous route...
One question though : after calling addContainmentModel(), I suppose I have to call assemble() and then commission() on the returned model instance before being able to use any of the services provided by the component, right? Brgds, R. Saravanan On Fri, 10 Sep 2004 19:12:53 +0800, Niclas Hedhman <[EMAIL PROTECTED]> wrote: > > > On Friday 10 September 2004 18:07, Stephen McConnell wrote: > > > -----Original Message----- > > > From: Rajamani Saravanan [mailto:[EMAIL PROTECTED] > > > It will be really simple if I can do this without embedding Merlin > > > into my application and instead asking it to simply launch all blocks > > > found in a folder - BUT AFTER login is through... > > > > No problem - to do this what you want is a "facility". Instead of > > embedding Merlin (and worrying about all of that stuff) just create a > > component that request the containing component model via context. For > > example - you facility would be the only component within the initial > > block but with a reference to the enclosing containment model you can > > dynamically populate your container with anything you want based on > > whatever logic you want. > > > With a reference to the containment model - you're in business. > Except he might not know what the business is... > > What Steve is trying to say; :o) > > 1. Get the reference to the <container> where the "start" component is > located by, > /** @avalon.entry key="urn:composition:containment.model" > * type="org.apache.avalon.composition.model.ContainmentModel" > */ > public void contextualize( Context ctx ) > { > m_Model = (ContainmentModel) > ctx.get( "urn:composition:containment.model" ); > } > Technically (probably considered bad practice) you can also retrieve any > container within the application, by getModel(), for instance getModel( "/" > ), returns the root container (although it might be the root application > container in the future). > > 2. Any point later in time, you can "load" another container/block dynamically > by doing; > m_Model.addContainmentModel( blockUrl ); > or > m_Model.addContainmentModel( blockUrl, configUrl ); > This will behave as if those blocks were "launched" at Merlin startup. > > 3. And you can equally do the opposite, remove the block later. > > Cheers > Niclas > -- > +------//-------------------+ > / http://www.bali.ac / > / http://niclas.hedhman.org / > +------//-------------------+ > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > > --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]