Yeah I saw that and was wondering how I can leverage the facility.  I see alot 
of potential here and have a lot of materials to go through in the sandbox.  
Merlin looks very promising for LDAPd's embedded configuration.  I'm very 
excited. 
 
Alex 
 
>  
> From: Stephen McConnell <[EMAIL PROTECTED]> 
> Date: 2003/08/19 Tue AM 05:39:09 EDT 
> To: Avalon framework users <[EMAIL PROTECTED]> 
> Subject: Re: Questions regarding the Context interface 
>  
>  
>  
> [EMAIL PROTECTED] wrote: 
>  
> >Thanks very much - you were extremely thorough.  I'll process your comments  
> >now.  
> > 
>  
> Actually I neglected to mention one of Merlin's more eosteric context  
> management features.  If you want to change the contextualization  
> interface that is applied to a component - well - you can.  For example,  
> lets imagine you want to do something like: 
>  
>  
>   public void contextualize( MyContext context ) 
>   { 
>       File dir = context.getDirectory(); // look dad - no casting 
>   } 
>  
>  
> All you need to do is to write the interface, declare the context  
> strategy dependency, provide a context handler extension, and your  
> done.  There is a tutorial on this subject in CVS under  
> merlin/merlin-platform/tutorials/contextualization.  Assuming you have  
> built both avalon-sandbox/meta and avalon-sandbox/merlin, all you need  
> to do to run the demo is: 
>  
>   $ cd merlin/merlin-platform/tutorials/contextualization 
>   $ maven validate 
>  
> Stephen. 
>  
> >  
> >Thanks,  
> >Alex  
> >  
> >   
> > 
> >>  
> >>From: Stephen McConnell <[EMAIL PROTECTED]>  
> >>Date: 2003/08/18 Mon PM 01:02:29 EDT  
> >>To: Avalon framework users <[EMAIL PROTECTED]>  
> >>Subject: Re: Questions regarding the Context interface  
> >>  
> >>  
> >>  
> >>[EMAIL PROTECTED] wrote:  
> >>  
> >>     
> >> 
> >>>Hello,   
> >>>  
> >>>My questions regard the use of the Context interface.  I have used the 
less   
> >>>portable means for getting a context object from the contextualize method  
> >>>       
> >>> 
> >in   
> >   
> > 
> >>>the past when using phoenix for my components - namely the following 
form:   
> >>>  
> >>> public void contextualize( Context context )   
> >>>        throws ContextException   
> >>>    {   
> >>>        BlockContext tContext = ( BlockContext ) context;   
> >>>    }   
> >>>  
> >>>As you can see the BlockContext is from phoenix.  I found myself doing 
this   
> >>>because I could get a path to the base phoenix directory via the   
> >>>getBaseDirectory() method.  I would like to use the recommended portable   
> >>>mechanism now that LDAPd is going to use more than one container.  The   
> >>>question is how do I make the container add the appropriate Context 
entry.   
> >>>       
> >>> 
> >I   
> >   
> > 
> >>>would image that would be container implementation specific.  So how 
would  
> >>>       
> >>> 
> >I   
> >   
> > 
> >>>add this entry using say Merlin and Fortress:   
> >>>  
> >>>  <entry key="avalon:work" type="java.io.File"/>   
> >>>   
> >>> 
> >>>       
> >>> 
> >>  
> >>If you declare the following <entry/> declaration in a type descriptor   
> >>(manually or via an @avalon.entry) then Merlin will take care of this   
> >>for you.  This declaration is based on the meta-info model declarations   
> >>which means its as close as you can get to an Avalon standard.  
> >>  
> >>  <context>  
> >>    <entry key="urn:avalon:home" type="java.io.File"/>  
> >>  </context>  
> >>  
> >>Please note that the following two file related keys are available   
> >>(which is slighlty different to what you described above):  
> >>  
> >>  "urn:avalon:work" - a transient directory that will be desoyed  
> >>                      following decommissioning of the component  
> >>  "urn:avalon:home" - persistent directory for the component  
> >>  
> >>  
> >>     
> >> 
> >>>to be able to get   
> >>>  
> >>>  File workDirectory = ( File ) context.get( "avalon:work" ) ;   
> >>>  
> >>>as is the recommended way in the javadocs page for the Context interface  
> >>>       
> >>> 
> >here:   
> >   
> > 
> >>>  
> >>>       
> >>> 
> 
>>http://avalon.apache.org/framework/api/org/apache/avalon/framework/context/Context.html
>>   
> >>     
> >> 
> >>  
> >>If you want to use a friendly castable context interface then you need   
> >>to declare this under the @avalon.context type="MyContextInterface" tag   
> >>which generates the following:  
> >>  
> >>  <context type="MyContextInterface">  
> >>    <!-- plus any entries -->  
> >>  </context>  
> >>  
> >>In your code you can safely case the supplied context to the declared   
> >>interface just like you do in Phoenix. This is also covered by the   
> >>meta-info model but Merlin is probably the only container to provide   
> >>support for this capability at this time.  
> >>  
> >>   public void contextualize( Context context )  
> >>   {  
> >>       MyContextInterface myContext = (MyContextInterface) context;  
> >>       File file = myContext.getMyFile();  
> >>   }  
> >>  
> >>There is also a working demonstration of this in the merlin tutorial   
> >>content.  
> >>  
> >>$ cd merlin-platform\tutorials\context_casting  
> >>$ maven  
> >>$ merlin -execute target\classes  
> >>  
> >>[INFO   ] (tutorial.hello): listing values resolved from domain specific   
> >>context  
> >>[INFO   ] (tutorial.hello): supplied context class:   
> >>tutorial.DemoContextProvider  
> >>[INFO   ] (tutorial.hello): name: hello  
> >>[INFO   ] (tutorial.hello): partition: /tutorial/  
> >>[INFO   ] (tutorial.hello): home: [you-directory]\home\tutorial\hello  
> >>[INFO   ] (tutorial.hello): temp: C:\TEMP\tutorial\hello  
> >>  
> >>Stephen.  
> >>  
> >>     
> >> 
> >>>  
> >>>Thanks much,   
> >>>Alex   
> >>>  
> >>> 
> >>> 
> >>>---------------------------------------------------------------------  
> >>>To unsubscribe, e-mail: [EMAIL PROTECTED]  
> >>>For additional commands, e-mail: [EMAIL PROTECTED]  
> >>> 
> >>> 
> >>> 
> >>>   
> >>> 
> >>>       
> >>> 
> >>  
> >>--   
> >>  
> >>Stephen J. McConnell  
> >>mailto:[EMAIL PROTECTED]  
> >>http://www.osm.net  
> >>  
> >>Sent via James running under Merlin as an NT service.  
> >>http://avalon.apache.org/sandbox/merlin  
> >>  
> >>  
> >>  
> >>  
> >>---------------------------------------------------------------------  
> >>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] 
> > 
> > 
> > 
> >   
> > 
>  
> --  
>  
> Stephen J. McConnell 
> mailto:[EMAIL PROTECTED] 
> http://www.osm.net 
>  
> Sent via James running under Merlin as an NT service. 
> http://avalon.apache.org/sandbox/merlin 
>  
>  
>  
>  
> --------------------------------------------------------------------- 
> 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]

Reply via email to