Re: Generator with XMLFilterImpl

gelo1234 <[email protected]>
Newsgroups gmane.text.xml.cocoon.user
Message-ID <CAPJaKUqoS6k0LEFV5avncaD58EfH+S-G=jLznNsfyW=kF6czjg@mail.gmail.com>
But you should really consider using Transformer as Jaxier suggested. Thats
what "filters" XML data in Cocoon so acts as a Filter.
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]
>>
>>
>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.