Thanks for setting things crispy clear Joerg :=)


Jorg (going back to read the cocoon internals manual)

Joerg Heinicke wrote:
On 11.11.2004 16:41, Bent Andr� Solheim wrote:

First of all, thank you for your answer Jorg!

I'm having a bit trouble with your suggestion. It appears the
transformer is configured after MyGenerator.compose(ComponentManager),
but before MyGenerator.generate(). It is in generate() I look up the
transformation id and put it in the Request, so when the transformer
is being configured, the parameter is not set, and I get a
FileNotFoundException (Unable to get transformer handler for file...).

I cannot do the lookup in compose, because this is only called on
generator creation. Have I misunderstood something here?


Unfortunately Jorg's suggestion can not work. You have a component configuration phase (compose() in your case), a pipeline build phase, a pipeline components setup phase (setup()) and a execution phase (generate()). When the first SAX event has left the generator (out of generate()), the transformation starts immediately. So, no chance to do it appropriately here.

On Thu, 11 Nov 2004 15:30:09 +0100, Jorg Heymans <[EMAIL PROTECTED]> wrote:

you can make your generator set a request attribute, and retrieve it in
the sitemap via the request-attr module .


The pipeline is already been setup when the generator is to be setup. This means for changing the pipeline it is to late. And changing the transformation in which way ever dynamically sounds like a hack.

Note that you cannot make the transformer *type* dynamic.


Exactly.

If you want to execute a different pipeline depending on parameters then
i think you could selectors for this (i've never used them so i could be
wrong)


This is part of pipeline build phase, i.e. where the pipeline components for this pipeline are chosen. A parameter set by the generator can not be used.

I'm developing an application where we keep thousands of gzipped xml
documents in some 20 different formats in a legacy relational
database. These documents can be accessed using a document id. I have
written a custom generator that retrieves a gzipped document from the
database based on a request parameter, unzips it, and passes sax
events on to a transformer. Which transformation the transformer
should use was earlier passed as a request parameter along with the
document id, but new requirements dictates that only the document id
can be passed as parameter. Now I have to look the transformation id
up in a database (in the same table as the gzipped xml document).

The application will be under heavy load constantly, so I would like
to minimize the number of database accesses pr. request. Hence, I
would like to look up the gzipped xml data and the transformation id
in one query. My question is; is there a way for my custom generator
to pass the transformation id to the next transformer in the pipeline
(file based)? Or do I need to write my own transformer that looks up
the transformation id based on the document id request parameter and
figures out what transformation to apply by it self?

To summarize; is there a way for my generator to tell the next
transformer which transformation to use?


No. But there is a component that can do this for you. The actions are executed before and used for building the pipeline. Let an action execute your query and pass the id to the generator and the transformer. The action can also retrieve the document and store it in the request from where the generator can get it.

Joerg


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Reply via email to