cocoon-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From gelo1234 <gelo1...@gmail.com>
Subject Re: [C3] Sting template, passing argument to method
Date Fri, 05 Oct 2012 08:59:00 GMT
Is there any reasonable benefit from using ST in "transform layer" ? I tend
to believe that C2/C3 authors overly favor ST templates in the whole C
architecture. Does it stem from the mere fact that ST is deadly simple/fast
to compute (transform data) while being very general-purpose ? Or is there
any other reason ? In my opinion ST is pretty exotic, i mean it is neither
any valid standard, nor seen in any favorable (Java EE) technology stack.

As this case shows, its not a valid engine for general-purpose problems.
Im not giving here the alternatives yet, because i would like to hear first
the reasons behind choosing ST as a preferable template engine in C2/C3.

Greetings,
Greg

2012/10/5 Francesco Chicchiriccò <ilgrosso@apache.org>

> On 04/10/2012 08:53, André Juffer wrote:
> > Hello,
> >
> > I am dealing with the following problem. A REST resource returns an
> > (DTO) object called statistics (of type Statistics) holding various
> > properties. With string template, each property can be inserted into
> > an XML file, like
> >
> > <A>$statistics.propertyA$</A>
> >
> > where the corresponding method on the Statistics object is
> > getPropertyA().
> >
> > One of the properties requires an argument of type String, where the
> > actual method signature is getNumberFor(String name). It returns an
> > int. The name is obtained from a list of names obtained from the
> > statistics objects as well. The idea is to iterate through the list of
> > names and return a number (int) for each name.
> >
> > Thus, the XML code that I try to complete looks like:
> > <socials>
> >   $statistics.names: { name |
> >     <social>
> >       <name>$name$</name>
> >       <number>$statistics.numberFor(name)$</tribc:number>
> >     </social>
> >   }$
> > </socials>
> >
> > The Statistics object holds among other things a Map<String, Integer>
> > with the requested numbers.
> >
> > The line $statistics.numberFor(name)$ is however erroneous. I cannot
> > pass the current value of name to the method in question.
> >
> > My question is now: How to pass a argument to a given method on an
> > object using string template. The string template website did not give
> > a clear answer, so maybe it is not even possible, or maybe I just
> > completely overlooked it.
> >
> > Any help is appreciated.
>
> Hi André.
> I am not an ST expert at all, but I really think there is no support for
> generic method invocation on ST expressions: the only methods supported
> seem to ne related to properties, "à la JavaBean".
>
> For your use case, I'd change a bit the application logic by providing a
> C3 REST controller that would act as a "data conversion proxy" between
> the sitemap and the actual REST resource you are currently dealing with.
> In this way you could query the external REST resource from the C3 REST
> controller body and prepare the data in a format that's suitable for ST.
>
> Regards.
>
> --
> Francesco Chicchiriccò
>
> ASF Member, Apache Cocoon PMC and Apache Syncope PPMC Member
> http://people.apache.org/~ilgrosso/
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@cocoon.apache.org
> For additional commands, e-mail: users-help@cocoon.apache.org
>
>

Mime
View raw message