cocoon-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From André Juffer <andre.juf...@oulu.fi>
Subject Re: [C3] Sting template, passing argument to method
Date Fri, 05 Oct 2012 09:21:59 GMT
On 10/05/2012 12:05 PM, gelo1234 wrote:
>
> Andre,
>
> In my opinion, if you are dealing with XML data, you should turn your
> eyes into XSL[T] instead of ST.

I use ST to create the initial XML from a DTO returned by a REST 
resource ('EventResource'), like

...
Map<String, Object> map = new HashMap<String, Object>();
EventStatisticsDTO dto = eventFacade_.getStatistics(eventId);
map.put("statistics", dto);
return URLResponseBuilder.newInstance(
                     "servlet:tribc-evt:/event-statistics." + format, map
                     ).build();


The tribc-evt:/event-statistics calls upon the sitemap.
Depending on 'format' (either 'xml' or 'json'), I leave the XML as it 
is, or I transform the XML to JSON using XSL.

Best,
André


>
> Greetings,
> Greg
>
> 2012/10/5 André Juffer <andre.juffer@oulu.fi <mailto:andre.juffer@oulu.fi>>
>
>     On 10/05/2012 09:30 AM, Francesco Chicchiriccò wrote:
>
>         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".
>
>
>     Yeah, that's what I thought.
>
>
>
>         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.
>
>
>     OK, I'll have a look at this. Alternatively, I may simply add a
>     method to the DTO that returns an XML representation of the DTO.
>     With ST, one would use then $statistics.asXml$ or something, but it
>     appears that all > and < symbols are replaced with &lt; and &gt;
>     which is not what I want of course.
>
>     Thanks,
>     Andre
>
>
>         Regards.
>
>
>
>     --
>     Andre H. Juffer              | Phone: +358-8-553 1161
>     <tel:%2B358-8-553%201161>
>     Biocenter Oulu and           | Fax: +358-8-553-1141
>     <tel:%2B358-8-553-1141>
>     Department of Biochemistry   | Email: andre.juffer@oulu.fi
>     <mailto:andre.juffer@oulu.fi>
>     University of Oulu, Finland  | WWW:
>     www.biochem.oulu.fi/__Biocomputing/
>     <http://www.biochem.oulu.fi/Biocomputing/>
>     StruBioCat                   | WWW: www.strubiocat.oulu.fi
>     <http://www.strubiocat.oulu.fi>
>     Triacle Biocomputing         | WWW: www.triacle-bc.com
>     <http://www.triacle-bc.com>
>
>     ------------------------------__------------------------------__---------
>     To unsubscribe, e-mail: users-unsubscribe@cocoon.__apache.org
>     <mailto:users-unsubscribe@cocoon.apache.org>
>     For additional commands, e-mail: users-help@cocoon.apache.org
>     <mailto:users-help@cocoon.apache.org>
>
>


-- 
Andre H. Juffer              | Phone: +358-8-553 1161
Biocenter Oulu and           | Fax: +358-8-553-1141
Department of Biochemistry   | Email: andre.juffer@oulu.fi
University of Oulu, Finland  | WWW: www.biochem.oulu.fi/Biocomputing/
StruBioCat                   | WWW: www.strubiocat.oulu.fi
Triacle Biocomputing         | WWW: www.triacle-bc.com

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@cocoon.apache.org
For additional commands, e-mail: users-help@cocoon.apache.org


Mime
View raw message