Thanks very much - you were extremely thorough. I'll process your comments
now.
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]