diff --git a/webapp/src/freemarker/ext/dump/BaseDumpDirective.java b/webapp/src/freemarker/ext/dump/BaseDumpDirective.java index a75cad89c..4e5a15966 100644 --- a/webapp/src/freemarker/ext/dump/BaseDumpDirective.java +++ b/webapp/src/freemarker/ext/dump/BaseDumpDirective.java @@ -6,7 +6,9 @@ import java.io.IOException; import java.io.StringWriter; import java.io.Writer; import java.lang.reflect.Method; +import java.util.ArrayList; import java.util.HashMap; +import java.util.List; import java.util.Map; import org.apache.commons.logging.Log; @@ -136,7 +138,13 @@ public abstract class BaseDumpDirective implements TemplateDirectiveModel { private Map getTemplateModelData(TemplateSequenceModel model) throws TemplateModelException { Map map = new HashMap(); map.put("type", "Sequence"); - //map.put("value", model.getAsNumber()); + int itemCount = model.size(); + List> items = new ArrayList>(itemCount); + for ( int i = 0; i < itemCount; i++ ) { + TemplateModel item = model.get(i); + items.add(getData(item)); + } + map.put("value", items); return map; } diff --git a/webapp/test/freemarker/ext/dump/DumpDirectiveTest.java b/webapp/test/freemarker/ext/dump/DumpDirectiveTest.java index fdbfc33ec..e95075cbb 100644 --- a/webapp/test/freemarker/ext/dump/DumpDirectiveTest.java +++ b/webapp/test/freemarker/ext/dump/DumpDirectiveTest.java @@ -2,6 +2,9 @@ package freemarker.ext.dump; +import static junit.framework.Assert.assertEquals; +import static junit.framework.Assert.fail; + import java.io.IOException; import java.io.StringReader; import java.io.StringWriter; @@ -10,9 +13,8 @@ import java.util.HashMap; import java.util.List; import java.util.Map; -import static junit.framework.Assert.assertEquals; -import static junit.framework.Assert.fail; - +import org.apache.log4j.Level; +import org.apache.log4j.Logger; import org.junit.Before; import org.junit.Test; @@ -39,6 +41,8 @@ public class DumpDirectiveTest { } catch (Exception e) { fail(e.getMessage()); } + // Turn off log messages to console + Logger.getLogger(BaseDumpDirective.class).setLevel(Level.OFF); } @Test @@ -54,13 +58,7 @@ public class DumpDirectiveTest { expected.put("type", "String"); expected.put("value", value); - try { - Environment env = template.createProcessingEnvironment(dataModel, new StringWriter()); - Map dumpData = new DumpDirective().getTemplateVariableData(varName, env); - assertEquals(expected, dumpData); - } catch (Exception e) { - fail(e.getMessage()); - } + test(varName, dataModel, expected); } @Test @@ -76,13 +74,7 @@ public class DumpDirectiveTest { expected.put("type", "Boolean"); expected.put("value", value); - try { - Environment env = template.createProcessingEnvironment(dataModel, new StringWriter()); - Map dumpData = new DumpDirective().getTemplateVariableData(varName, env); - assertEquals(expected, dumpData); - } catch (Exception e) { - fail(e.getMessage()); - } + test(varName, dataModel, expected); } @Test @@ -98,13 +90,7 @@ public class DumpDirectiveTest { expected.put("type", "Number"); expected.put("value", value); - try { - Environment env = template.createProcessingEnvironment(dataModel, new StringWriter()); - Map dumpData = new DumpDirective().getTemplateVariableData(varName, env); - assertEquals(expected, dumpData); - } catch (Exception e) { - fail(e.getMessage()); - } + test(varName, dataModel, expected); } @Test @@ -120,13 +106,7 @@ public class DumpDirectiveTest { expected.put("type", "Number"); expected.put("value", value); - try { - Environment env = template.createProcessingEnvironment(dataModel, new StringWriter()); - Map dumpData = new DumpDirective().getTemplateVariableData(varName, env); - assertEquals(expected, dumpData); - } catch (Exception e) { - fail(e.getMessage()); - } + test(varName, dataModel, expected); } // RY test method and directive types with and without help methods @@ -144,13 +124,7 @@ public class DumpDirectiveTest { expected.put("type", "Method"); expected.put("help", null); - try { - Environment env = template.createProcessingEnvironment(dataModel, new StringWriter()); - Map dumpData = new DumpDirective().getTemplateVariableData(varName, env); - assertEquals(expected, dumpData); - } catch (Exception e) { - fail(e.getMessage()); - } + test(varName, dataModel, expected); } @Test @@ -166,13 +140,7 @@ public class DumpDirectiveTest { expected.put("type", "Method"); expected.put("help", getMethodHelp(varName)); - try { - Environment env = template.createProcessingEnvironment(dataModel, new StringWriter()); - Map dumpData = new DumpDirective().getTemplateVariableData(varName, env); - assertEquals(expected, dumpData); - } catch (Exception e) { - fail(e.getMessage()); - } + test(varName, dataModel, expected); } @Test @@ -188,14 +156,9 @@ public class DumpDirectiveTest { expected.put("type", "Method"); expected.put("help", null); - try { - Environment env = template.createProcessingEnvironment(dataModel, new StringWriter()); - Map dumpData = new DumpDirective().getTemplateVariableData(varName, env); - assertEquals(expected, dumpData); - } catch (Exception e) { - fail(e.getMessage()); - } + test(varName, dataModel, expected); } + @Test public void dumpHelplessDirective() { @@ -209,13 +172,7 @@ public class DumpDirectiveTest { expected.put("type", "Directive"); expected.put("help", null); - try { - Environment env = template.createProcessingEnvironment(dataModel, new StringWriter()); - Map dumpData = new DumpDirective().getTemplateVariableData(varName, env); - assertEquals(expected, dumpData); - } catch (Exception e) { - fail(e.getMessage()); - } + test(varName, dataModel, expected); } @Test @@ -231,13 +188,7 @@ public class DumpDirectiveTest { expected.put("type", "Directive"); expected.put("help", getDirectiveHelp(varName)); - try { - Environment env = template.createProcessingEnvironment(dataModel, new StringWriter()); - Map dumpData = new DumpDirective().getTemplateVariableData(varName, env); - assertEquals(expected, dumpData); - } catch (Exception e) { - fail(e.getMessage()); - } + test(varName, dataModel, expected); } @Test @@ -253,17 +204,41 @@ public class DumpDirectiveTest { expected.put("type", "Directive"); expected.put("help", null); - try { - Environment env = template.createProcessingEnvironment(dataModel, new StringWriter()); - Map dumpData = new DumpDirective().getTemplateVariableData(varName, env); - assertEquals(expected, dumpData); - } catch (Exception e) { - fail(e.getMessage()); - } + test(varName, dataModel, expected); } // RY Do these with different BeansWrappers @Test - public void dumpSequence() { + public void dumpScalarList() { + + String varName = "fruit"; + Map dataModel = new HashMap(); + List list = new ArrayList(); + list.add("apples"); + list.add("bananas"); + list.add("oranges"); + dataModel.put(varName, list); + + Map expected = new HashMap(); + expected.put("name", varName); + expected.put("type", "Sequence"); + List> listDump = new ArrayList>(); + for ( String str : list) { + Map map = new HashMap(); + map.put("type", "String"); + map.put("value", str); + listDump.add(map); + } + expected.put("value", listDump); + + test(varName, dataModel, expected); + + } + + // RY Do these with different BeansWrappers + @Test + public void dumpScalarArray() { + + } @@ -277,6 +252,18 @@ public class DumpDirectiveTest { } + /////////////////////////// Private helper classes and methods /////////////////////////// + + private void test(String varName, Map dataModel, Map expected) { + try { + Environment env = template.createProcessingEnvironment(dataModel, new StringWriter()); + Map dumpData = new DumpDirective().getTemplateVariableData(varName, env); + assertEquals(expected, dumpData); + } catch (Exception e) { + fail(e.getMessage()); + } + } + private class HelplessMethod implements TemplateMethodModel { @Override