NIHVIVO-1562 Dump for TemplateSequenceModel

This commit is contained in:
ryounes 2011-04-08 17:23:16 +00:00
parent 5bbf6b472b
commit 575ab24ef6
2 changed files with 70 additions and 75 deletions

View file

@ -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<String, Object> getTemplateModelData(TemplateSequenceModel model) throws TemplateModelException {
Map<String, Object> map = new HashMap<String, Object>();
map.put("type", "Sequence");
//map.put("value", model.getAsNumber());
int itemCount = model.size();
List<Map<String, Object>> items = new ArrayList<Map<String, Object>>(itemCount);
for ( int i = 0; i < itemCount; i++ ) {
TemplateModel item = model.get(i);
items.add(getData(item));
}
map.put("value", items);
return map;
}

View file

@ -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<String, Object> 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<String, Object> 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<String, Object> 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<String, Object> 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<String, Object> 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<String, Object> 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<String, Object> 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<String, Object> 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<String, Object> 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<String, Object> 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<String, Object> dataModel = new HashMap<String, Object>();
List<String> list = new ArrayList<String>();
list.add("apples");
list.add("bananas");
list.add("oranges");
dataModel.put(varName, list);
Map<String, Object> expected = new HashMap<String, Object>();
expected.put("name", varName);
expected.put("type", "Sequence");
List<Map<String, Object>> listDump = new ArrayList<Map<String, Object>>();
for ( String str : list) {
Map<String, Object> map = new HashMap<String, Object>();
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<String, Object> dataModel, Map<String, Object> expected) {
try {
Environment env = template.createProcessingEnvironment(dataModel, new StringWriter());
Map<String, Object> dumpData = new DumpDirective().getTemplateVariableData(varName, env);
assertEquals(expected, dumpData);
} catch (Exception e) {
fail(e.getMessage());
}
}
private class HelplessMethod implements TemplateMethodModel {
@Override