cocoon-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Francesco Chicchiriccò <ilgro...@apache.org>
Subject Re: [C3] Sting template, passing argument to method
Date Fri, 05 Oct 2012 09:08:16 GMT
On 05/10/2012 10:59, gelo1234 wrote:
>
> 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.

AFAIK, ST is not "preferred", it's barely the only one available so far
in C3.

And I don't remember ST to be available at all in C2.1 and C2.2.
C2.1 and C.2.2 have instead a wider range of supported template engines,
including JX (my favorite) [1] [2].

If you'd like to port JX (or any other templating engine) to C3, your
contribution is more than welcome.

Best regards.

[1] http://cocoon.apache.org/2.2/blocks/template/1.0/976_1_1.html
[2] http://cocoon.apache.org/2.2/blocks/template/1.0/1012_1_1.html

> 2012/10/5 Francesco Chicchiriccò <ilgrosso@apache.org
> <mailto: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/


Mime
View raw message