El 06/12/2012 20:40, "gelo1234" <[email protected]> escribió:
>
>
> But you should really consider using Transformer as Jaxier suggested.
Thats what "filters" XML data in Cocoon so acts as a Filter.

Exactly, recently I have to migrate a Cocoon application to pure java and
transformers are just XMLFilters. That's why I suggest this approach. If
you can't do it with xslt you can create your own transformer.

> If you need to do this in Java (write your own Transformer [Filter]), you
can take a look at one of the simplest Transformers
> in Cocoon sources: CleaningTransformer
>
>
cocoon-sax/src/main/java/org/apache/cocoon/sax/component/CleaningTransformer.java
>
> You just consume SAX events and generate new ones :)
>
> Greetings,
> Greg
>
>
>
> 2012/12/6 gelo1234 <[email protected]>
>>
>>
>> If you need to do this in generator why not writing your own Generator ?
that extends AbstractSAXGenerator ?
>> You can find example in:
>> cocoon-sample/src/main/java/org/apache/cocoon/sample/generation/
>>
>> Greetings,
>> Greg
>>
>>
>> 2012/12/6 Mansour Al Akeel <[email protected]>
>>>
>>> Javier, thank you for replying.
>>> For many additional reasons, I need to do this in a generator. It's
>>> not my call on this. So I need to connect the XMLFilterImpl to the
>>> Generator.
>>> I know it can be done, but looking for the simplest and cleanest way.
>>>
>>>
>>> On Thu, Dec 6, 2012 at 12:25 PM, Javier Puerto <[email protected]>
wrote:
>>> > Hi Mansour,
>>> >
>>> > 2012/12/6 Mansour Al Akeel <[email protected]>
>>> >>
>>> >> Hello all,
>>> >> I am using C2.2 for this project, and I need to add some
functionality
>>> >> to the current file generator (ie, logging and warning for broken
>>> >> links). I know this can be done in a transformer,
>>> >> but since it's required in many places, I want it in the Generator.
>>> >>
>>> >>
>>> >> Since the generator, generates SAX events, the simplest way is to
>>> >> insert an XMLFilterImpl that does the logging, between the generator
>>> >> and the consumer. For example:
>>> >
>>> >
>>> > I think that use a Transformer is the Cocoon way and simplest (no
need of
>>> > java code).
>>> >
>>> > <map:pipeline match="myCustomFileGenerator/**">
>>> >   <map:generator src="{1}"/>
>>> >   <map:transform src="yourXSLT"/>
>>> >   <mao:serialize/>
>>> > </map:pipeline>
>>> >
>>> > Then you can use from other pipelines in the same sitemap like this:
>>> >
>>> > <map:pipeline match="my/service">
>>> >   <map:generate
src="cocoon:/myCustomFileGenerator/your/file/to/consume"/>
>>> >   ....
>>> >
>>> > From another block you can consume also with the sevlet: protocol,
just add
>>> > the name of the block with the service you want to consume:
>>> > <map:pipeline match="my/service">
>>> >   <map:generate
>>> > src="servlet:myBlock:/myCustomFileGenerator/your/file/to/consume"/>
>>> >
>>> >
>>> >>
>>> >> Currently:
>>> >>
>>> >> FileGenerator --> events ---> XMLConsumer
>>> >>
>>> >> I need it to be:
>>> >>
>>> >> FileGenerator --> events --> XMLFilterImpl ---> XMLConsumer
>>> >> OR
>>> >> FileGenerator --> events ---> XMLConsumer --> XMLFilterImpl
>>> >>
>>> >> The issue is I couldn't find any example on connecting and setting up
>>> >> a filter between the generator and the consumer.
>>> >> Additionally, setting the contentHandler doesn't seem to have any
>>> >> effect. Currently this is what I have and the events are not passing
>>> >> through LinkValidator Filter.
>>> >>
>>> >>
>>> >> public class MyGenerator extends FileGenerator {
>>> >>
>>> >>         @Override
>>> >>         public void setup(SourceResolver resolver, Map objectModel,
String
>>> >> src, Parameters parameters) throws ProcessingException, SAXException,
>>> >> IOException {
>>> >>
>>> >>                 super.setup(resolver, objectModel, src, parameters);
>>> >>
>>> >>                 LinkValidator validator = new
>>> >> LinkValidator(this.contentHandler);
>>> >>
>>> >>                 this.setContentHandler(validator);
>>> >>
>>> >>         }
>>> >>
>>> >>         @Override
>>> >>         public void generate() throws IOException, SAXException,
>>> >> ProcessingException {
>>> >>                 super.generate();
>>> >>         }
>>> >>
>>> >> }
>>> >>
>>> >>
>>> >> Thank you
>>> >
>>> >
>>> > If you have implemented the XMLFilter already, you can easily
transform into
>>> > a Cocoon transformer, the interface is very similar.
>>> >
>>> > Salu2.
>>> >
>>> >>
>>> >>
>>> >> ---------------------------------------------------------------------
>>> >> 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