public String render(final String template,
final Map<String, Object> parameters)
throws IOException {
final ST stringTemplate = new ST(template, '$', '$');
if (parameters == null || parameters.isEmpty()) {
LOG.warn("There are not any parameters passed to the template.");
} else {
for (Map.Entry<String, Object> entry : parameters.entrySet()) {
stringTemplate.add(entry.getKey().replace(".", "_"),
(entry.getValue() instanceof String)
? StringEscapeUtils.escapeXml(
entry.getValue().toString())
: entry.getValue());
LOG.debug("Passing pipeline parameter as attribute: key={}"
+ ", value={}", entry.getKey(), entry.getValue());
}
}
return stringTemplate.render();
So you could e.g. write your own routine to find a clue where the problem is located but by following the Cocoon mailinglist I learned from Francesco that Commons Collections has a nice method to print a Map's content verbose. So I decided to experiment myself a bit to see how quickly I would find the issue using this approach and modified the code a bit.
for (Map.Entry<String, Object> entry : parameters.entrySet()) {
stringTemplate.add(entry.getKey().replace(".", "_"),
(entry.getValue() instanceof String)
? StringEscapeUtils.escapeXml(
entry.getValue().toString())
: entry.getValue());
if (entry.getKey() == "cocoon") MapUtils.verbosePrint(System.out, "cocoon", (Map) entry.getValue());
}
Now the output that got logged is listed below. I indented it a bit more properly but we can quickly see that "cocoon" has a "controller" which points back to "cocoon". --> (ancestor[0] Map)
cocoon =
{
response = org.apache.cocoon.servletservice.HttpServletResponseBufferingWrapper@12b13004
settings = Settings:
running mode : dev
org.apache.cocoon.reload-delay : 1000
org.apache.cocoon.reloading : false
org.apache.cocoon.classloader.load.classes :
org.apache.cocoon.cache.directory : C:\workspaces\..\target\work\cache-dir
org.apache.cocoon.work.directory : C:\workspaces\..\target\work
org.apache.cocoon.formencoding : null
org.apache.cocoon.containerencoding : UTF-8
request = org.apache.cocoon.servlet.util.ObjectModelProvider$ObjectModelRequest@77d67cee
context = org.apache.cocoon.servletservice.ServletServiceContext@7d91ec17
controller =
{
baseUrl = file:/C:/workspaces/apache/../src/main/resources/COB-INF/
id = abc
javax.servlet.http.HttpServletResponse = org.apache.cocoon.servletservice.HttpServletResponseBufferingWrapper@12b13004
testProperty = test
source = file:/C:/workspaces/apache/cocoon/cocoon3/trunk/cocoon-sample/src/main/resources/COB-INF/controller/demo.html
javax.servlet.ServletContext = org.apache.cocoon.servletservice.ServletServiceContext@7d91ec17
javax.servlet.http.HttpServletRequest = org.apache.cocoon.servletservice.util.ServletServiceRequest@5513fab7
org.apache.cocoon.configuration.Settings = Settings:
Running mode : dev
org.apache.cocoon.reload-delay : 1000
org.apache.cocoon.reloading : false
org.apache.cocoon.classloader.load.classes :
org.apache.cocoon.cache.directory : C:\workspaces\..\target\work\cache-dir
org.apache.cocoon.work.directory : C:\workspaces\..\target\work
org.apache.cocoon.formencoding : null
org.apache.cocoon.containerencoding : UTF-8
name = foo
cocoon = (ancestor[0] Map)
reqparam = 1
}
}
No comments:
Post a Comment