}
public void generate(PrintWriter anOutputWriter, Map aValues, PrintWriter aLogger) throws GeneratorException {
- aLogger.println("processing...<br/>");
- template.process((TemplateModelRoot) makeMapAdapter(aValues), anOutputWriter);
- aLogger.println("processed...<br/>");
+ try {
+ template.process((TemplateModelRoot) makeMapAdapter(aValues), anOutputWriter);
+ }
+ catch (Throwable t) {
+ aLogger.println("Exception occurred: "+t.getMessage());
+ t.printStackTrace(aLogger);
+ }
}
private static TemplateScalarModel makeStringAdapter(String aString) {
return makeMapAdapter((Map) anObject);
else if (anObject instanceof Iterator)
return makeIteratorAdapter((Iterator) anObject);
+ else if (anObject instanceof List)
+ return makeIteratorAdapter(((List) anObject).iterator());
else
throw new TemplateModelException("Unadaptable class: " + anObject.getClass().getName());
}
if (!valuesCache.containsKey(aKey)) {
Object value = map.get(aKey);
- if (value == null)
- throw new TemplateModelException("MapAdapter: no key "+aKey+" available");
+ if (value == null && !map.containsKey(aKey))
+ throw new TemplateModelException("MapAdapter: no key "+aKey+" available");
valuesCache.put(aKey, makeAdapter(value));
}