cocoon-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Sylvain Wallez <sylv...@apache.org>
Subject Re: How do I create a context from a background task in cocoon?
Date Tue, 06 Dec 2005 21:25:44 GMT
Ard Schrijvers wrote:
> Does anybody have experience with calling a pipeline from a background task resulting
from an eventHandler?
>
> So, on an event, a java class is executed which implements Contextualizable.
>
> I am trying something like 
>
> import org.apache.avalon.framework.context.Contextualizable;
> import org.apache.avalon.framework.context.Context;
> import org.apache.avalon.framework.context.ContextException;
>
>     implements Contextualizable, ...
>
>     private Context context;
>
>     public void contextualize(Context context) throws ContextException {
>         this.context = context;
>
>     }
> PipelineUtil pipeUtil = new PipelineUtil();
> try {
>     pipeUtil.contextualize(context);
>     pipeUtil.service(serviceManager);
>     pipeUtil.processToSAX(uri, null, somehandler);
> } catch (Exception e) {
>     throw new CascadingRuntimeException("Cannot process pipeline from '" + uri + "'",
e);
> } finally {
>     pipeUtil.dispose();
> }
>
> Now, this does not work, because it does not have a context, since the class is not called
from a sitemap but from an external event.
>
> So, I tried instead of with the context, the SourceResolver, like
>
> SourceResolver resolver = (SourceResolver) manager.lookup(SourceResolver.ROLE);
>
> and then something like 
> Source inputSource = resolver.resolveURI("cocoon://dasl/references/content/test/Passage.xml");
>
> But, nothing happens, I suppose because the cocoon:// is only available when the call
is initiated from a sitemap (or flow of course)
>
> So, does anybody know how to solve this/solved this before?
>   

Yes. Running a Cocoon pipeline in a background task requires to setup a 
"fake" environment so that the SourceResolver can do its job. You can 
achieve that either by using the scheduler (cron block) to fire a job 
immediately, or directly use the BackgroundEnvironment class that it 
uses under the hoods.

Sylvain

-- 
Sylvain Wallez                        Anyware Technologies
http://bluxte.net                     http://www.anyware-tech.com
Apache Software Foundation Member     Research & Technology Director


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@cocoon.apache.org
For additional commands, e-mail: users-help@cocoon.apache.org


Mime
View raw message