cocoon-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Francesco Chicchiriccò <ilgro...@apache.org>
Subject Re: [C3] new pipeline component: variabelExpander
Date Thu, 15 Dec 2011 17:08:09 GMT
On 15/12/2011 17:25, Simone Tripodi wrote:
> Hi all guys,
> I just committed r1214835 a new component I need for work, so I thought it would have
been a good idea contributing back to OSS since C3 is the foundation of the XML processor
I am writing.
>
> Basically, I needed to put variables inside our XML document that can be replaced depending
by the context the pipeline works, so the idea came from Ant/Maven and some code I already
did in Commons-Digester, using the ${} marker for variables have to be expanded.
>
> Using that new component is very simple: given the XML
>
> <project>
>    <target>
>      <delete dir="${build.home}" />
>      <delete dir="${dist.home}" />
>      <echo>A property '${text.property}' inside the text</echo>
>    </target>
> </project>
>
> users can define their variables (in form of Properties/Map<String,String>):
>
>          Properties variables = new Properties();
>          variables.setProperty( "build.base", "/Users/cocoon" );
>          variables.setProperty( "build.home", "${build.base}/workspace" );
>          variables.setProperty( "dist.home", "${build.base}/downloads" );
>          variables.setProperty( "text.property", "Cocoon3 rocks!" );
>
> then creating and run their pipeline adding the VariableExpander:
>
>          newNonCachingPipeline().setURLGenerator(getClass().getResource( "/variables-expander.xml"
) )
>                                 .addVariableExpander( variables )
>                                 .addSerializer()
>                                 .withEmptyConfiguration()
>                                 .setup( System.out )
>                                 .execute();
>
> the XML document will be processed by the next component in the pipeline will look like:
>
> <project>
>    <target>
>      <delete dir="Users/cocoon/workspace" />
>      <delete dir="Users/cocoon/download" />
>      <echo>A property 'Cocoon3 rocks!' inside the text</echo>
>    </target>
> </project>
>
> WDYT? I hope it will be useful for you as well it is for me :P

Hi Simone,
this sounds like a really nice and lightweight improvement for C3 :-)

So far I have been achieving similar results by using 
StringTemplateTransformer which implies, as known, an additional 
dependency; however, StringTemplate for realizing only this is actually 
too much.

Anyway, could you think of a way for using this new component inside 
sitemap?

Thanks.

-- 
Francesco Chicchiriccò

Apache Cocoon Committer and PMC Member
http://people.apache.org/~ilgrosso/


Mime
View raw message