*** empty log message ***
[mir.git] / source / mir / generator / FreemarkerGenerator.java
index d4778ff..fdf66cc 100755 (executable)
@@ -16,9 +16,13 @@ public class FreemarkerGenerator implements Generator {
   }
 
   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) {
@@ -48,6 +52,8 @@ public class FreemarkerGenerator implements Generator {
            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());
        }
@@ -77,8 +83,8 @@ public class FreemarkerGenerator implements Generator {
            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));
            }