NIHVIVO-1562 Dump of TemplateCollectionModel and TemplateHashModelEx, along with some unit tests.
This commit is contained in:
parent
84b9365ad4
commit
9bfa6acbd5
2 changed files with 176 additions and 40 deletions
|
@ -7,6 +7,7 @@ import java.io.StringWriter;
|
||||||
import java.io.Writer;
|
import java.io.Writer;
|
||||||
import java.lang.reflect.Method;
|
import java.lang.reflect.Method;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Comparator;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
@ -17,6 +18,7 @@ import org.apache.commons.logging.LogFactory;
|
||||||
import freemarker.core.Environment;
|
import freemarker.core.Environment;
|
||||||
import freemarker.template.Template;
|
import freemarker.template.Template;
|
||||||
import freemarker.template.TemplateBooleanModel;
|
import freemarker.template.TemplateBooleanModel;
|
||||||
|
import freemarker.template.TemplateCollectionModel;
|
||||||
import freemarker.template.TemplateDateModel;
|
import freemarker.template.TemplateDateModel;
|
||||||
import freemarker.template.TemplateDirectiveModel;
|
import freemarker.template.TemplateDirectiveModel;
|
||||||
import freemarker.template.TemplateException;
|
import freemarker.template.TemplateException;
|
||||||
|
@ -25,6 +27,7 @@ import freemarker.template.TemplateHashModelEx;
|
||||||
import freemarker.template.TemplateMethodModel;
|
import freemarker.template.TemplateMethodModel;
|
||||||
import freemarker.template.TemplateModel;
|
import freemarker.template.TemplateModel;
|
||||||
import freemarker.template.TemplateModelException;
|
import freemarker.template.TemplateModelException;
|
||||||
|
import freemarker.template.TemplateModelIterator;
|
||||||
import freemarker.template.TemplateNumberModel;
|
import freemarker.template.TemplateNumberModel;
|
||||||
import freemarker.template.TemplateScalarModel;
|
import freemarker.template.TemplateScalarModel;
|
||||||
import freemarker.template.TemplateSequenceModel;
|
import freemarker.template.TemplateSequenceModel;
|
||||||
|
@ -91,6 +94,11 @@ public abstract class BaseDumpDirective implements TemplateDirectiveModel {
|
||||||
} else if (model instanceof TemplateSequenceModel){
|
} else if (model instanceof TemplateSequenceModel){
|
||||||
map.putAll( getTemplateModelData( ( TemplateSequenceModel)model ) );
|
map.putAll( getTemplateModelData( ( TemplateSequenceModel)model ) );
|
||||||
|
|
||||||
|
} else if (model instanceof TemplateCollectionModel) {
|
||||||
|
map.putAll( getTemplateModelData( ( TemplateCollectionModel)model ) );
|
||||||
|
|
||||||
|
// Nodes and transforms not included here
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
map.putAll( getTemplateModelData( (TemplateModel)model ) );
|
map.putAll( getTemplateModelData( (TemplateModel)model ) );
|
||||||
}
|
}
|
||||||
|
@ -146,6 +154,8 @@ public abstract class BaseDumpDirective implements TemplateDirectiveModel {
|
||||||
}
|
}
|
||||||
|
|
||||||
private Map<String, Object> getTemplateModelData(TemplateHashModel model) throws TemplateModelException {
|
private Map<String, Object> getTemplateModelData(TemplateHashModel model) throws TemplateModelException {
|
||||||
|
// The data model is a hash; when else do we get here?
|
||||||
|
log.debug("Dumping model " + model);
|
||||||
Map<String, Object> map = new HashMap<String, Object>();
|
Map<String, Object> map = new HashMap<String, Object>();
|
||||||
map.put("type", "Hash");
|
map.put("type", "Hash");
|
||||||
//map.put("value", model.getAsBoolean());
|
//map.put("value", model.getAsBoolean());
|
||||||
|
@ -167,8 +177,30 @@ public abstract class BaseDumpDirective implements TemplateDirectiveModel {
|
||||||
|
|
||||||
private Map<String, Object> getTemplateModelData(TemplateHashModelEx model) throws TemplateModelException {
|
private Map<String, Object> getTemplateModelData(TemplateHashModelEx model) throws TemplateModelException {
|
||||||
Map<String, Object> map = new HashMap<String, Object>();
|
Map<String, Object> map = new HashMap<String, Object>();
|
||||||
map.put("type", "HashModelEx");;
|
map.put("type", "HashEx");
|
||||||
//map.put("value", model.getAsDate());
|
Map<String, Object> items = new HashMap<String, Object>();
|
||||||
|
// keys() gets only values visible to template
|
||||||
|
TemplateCollectionModel keys = model.keys();
|
||||||
|
TemplateModelIterator iModel = keys.iterator();
|
||||||
|
while (iModel.hasNext()) {
|
||||||
|
String key = iModel.next().toString();
|
||||||
|
TemplateModel value = model.get(key);
|
||||||
|
items.put(key, getData(value));
|
||||||
|
}
|
||||||
|
map.put("value", items);
|
||||||
|
return map;
|
||||||
|
}
|
||||||
|
|
||||||
|
private Map<String, Object> getTemplateModelData(TemplateCollectionModel model) throws TemplateModelException {
|
||||||
|
Map<String, Object> map = new HashMap<String, Object>();
|
||||||
|
map.put("type", "Collection");
|
||||||
|
List<Map<String, Object>> items = new ArrayList<Map<String, Object>>();
|
||||||
|
TemplateModelIterator iModel = model.iterator();
|
||||||
|
while (iModel.hasNext()) {
|
||||||
|
TemplateModel m = iModel.next();
|
||||||
|
items.add(getData(m));
|
||||||
|
}
|
||||||
|
map.put("value", items);
|
||||||
return map;
|
return map;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -181,7 +213,7 @@ public abstract class BaseDumpDirective implements TemplateDirectiveModel {
|
||||||
|
|
||||||
private Map<String, Object> getTemplateModelData(TemplateDirectiveModel model, String varName) throws TemplateModelException {
|
private Map<String, Object> getTemplateModelData(TemplateDirectiveModel model, String varName) throws TemplateModelException {
|
||||||
Map<String, Object> map = new HashMap<String, Object>();
|
Map<String, Object> map = new HashMap<String, Object>();
|
||||||
map.put("type", "Directive");;
|
map.put("type", "Directive");
|
||||||
map.put("help", getHelp(model, varName));
|
map.put("help", getHelp(model, varName));
|
||||||
return map;
|
return map;
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,8 +14,10 @@ import java.util.ArrayList;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
import java.util.HashSet;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
import org.apache.log4j.Level;
|
import org.apache.log4j.Level;
|
||||||
import org.apache.log4j.Logger;
|
import org.apache.log4j.Logger;
|
||||||
|
@ -24,7 +26,9 @@ import org.junit.Test;
|
||||||
|
|
||||||
import freemarker.core.Environment;
|
import freemarker.core.Environment;
|
||||||
import freemarker.template.Configuration;
|
import freemarker.template.Configuration;
|
||||||
|
import freemarker.template.SimpleCollection;
|
||||||
import freemarker.template.Template;
|
import freemarker.template.Template;
|
||||||
|
import freemarker.template.TemplateCollectionModel;
|
||||||
import freemarker.template.TemplateDirectiveBody;
|
import freemarker.template.TemplateDirectiveBody;
|
||||||
import freemarker.template.TemplateDirectiveModel;
|
import freemarker.template.TemplateDirectiveModel;
|
||||||
import freemarker.template.TemplateException;
|
import freemarker.template.TemplateException;
|
||||||
|
@ -53,8 +57,9 @@ public class DumpDirectiveTest {
|
||||||
public void dumpString() {
|
public void dumpString() {
|
||||||
|
|
||||||
String varName = "dog";
|
String varName = "dog";
|
||||||
String value = "Rover";
|
|
||||||
Map<String, Object> dataModel = new HashMap<String, Object>();
|
Map<String, Object> dataModel = new HashMap<String, Object>();
|
||||||
|
|
||||||
|
String value = "Rover";
|
||||||
dataModel.put(varName, value);
|
dataModel.put(varName, value);
|
||||||
|
|
||||||
Map<String, Object> expected = new HashMap<String, Object>();
|
Map<String, Object> expected = new HashMap<String, Object>();
|
||||||
|
@ -68,9 +73,10 @@ public class DumpDirectiveTest {
|
||||||
@Test
|
@Test
|
||||||
public void dumpBoolean() {
|
public void dumpBoolean() {
|
||||||
|
|
||||||
String varName = "hasSiteAdminAccess";
|
String varName = "isLoggedIn";
|
||||||
boolean value = true;
|
|
||||||
Map<String, Object> dataModel = new HashMap<String, Object>();
|
Map<String, Object> dataModel = new HashMap<String, Object>();
|
||||||
|
|
||||||
|
boolean value = true;
|
||||||
dataModel.put(varName, value);
|
dataModel.put(varName, value);
|
||||||
|
|
||||||
Map<String, Object> expected = new HashMap<String, Object>();
|
Map<String, Object> expected = new HashMap<String, Object>();
|
||||||
|
@ -85,8 +91,9 @@ public class DumpDirectiveTest {
|
||||||
public void dumpNumber() {
|
public void dumpNumber() {
|
||||||
|
|
||||||
String varName = "tabCount";
|
String varName = "tabCount";
|
||||||
int value = 7;
|
|
||||||
Map<String, Object> dataModel = new HashMap<String, Object>();
|
Map<String, Object> dataModel = new HashMap<String, Object>();
|
||||||
|
|
||||||
|
int value = 7;
|
||||||
dataModel.put(varName, value);
|
dataModel.put(varName, value);
|
||||||
|
|
||||||
Map<String, Object> expected = new HashMap<String, Object>();
|
Map<String, Object> expected = new HashMap<String, Object>();
|
||||||
|
@ -101,8 +108,9 @@ public class DumpDirectiveTest {
|
||||||
public void dumpSimpleDate() {
|
public void dumpSimpleDate() {
|
||||||
|
|
||||||
String varName = "now";
|
String varName = "now";
|
||||||
Date now = new Date();
|
|
||||||
Map<String, Object> dataModel = new HashMap<String, Object>();
|
Map<String, Object> dataModel = new HashMap<String, Object>();
|
||||||
|
|
||||||
|
Date now = new Date();
|
||||||
dataModel.put(varName, now);
|
dataModel.put(varName, now);
|
||||||
|
|
||||||
Map<String, Object> expected = new HashMap<String, Object>();
|
Map<String, Object> expected = new HashMap<String, Object>();
|
||||||
|
@ -118,8 +126,9 @@ public class DumpDirectiveTest {
|
||||||
public void dumpDateTime() {
|
public void dumpDateTime() {
|
||||||
|
|
||||||
String varName = "timestamp";
|
String varName = "timestamp";
|
||||||
Timestamp ts = new Timestamp(1302297332043L);
|
|
||||||
Map<String, Object> dataModel = new HashMap<String, Object>();
|
Map<String, Object> dataModel = new HashMap<String, Object>();
|
||||||
|
|
||||||
|
Timestamp ts = new Timestamp(1302297332043L);
|
||||||
dataModel.put(varName, ts);
|
dataModel.put(varName, ts);
|
||||||
|
|
||||||
Map<String, Object> expected = new HashMap<String, Object>();
|
Map<String, Object> expected = new HashMap<String, Object>();
|
||||||
|
@ -135,8 +144,9 @@ public class DumpDirectiveTest {
|
||||||
public void dumpSqlDate() {
|
public void dumpSqlDate() {
|
||||||
|
|
||||||
String varName = "date";
|
String varName = "date";
|
||||||
java.sql.Date date = new java.sql.Date(1302297332043L);
|
|
||||||
Map<String, Object> dataModel = new HashMap<String, Object>();
|
Map<String, Object> dataModel = new HashMap<String, Object>();
|
||||||
|
|
||||||
|
java.sql.Date date = new java.sql.Date(1302297332043L);
|
||||||
dataModel.put(varName, date);
|
dataModel.put(varName, date);
|
||||||
|
|
||||||
Map<String, Object> expected = new HashMap<String, Object>();
|
Map<String, Object> expected = new HashMap<String, Object>();
|
||||||
|
@ -152,8 +162,9 @@ public class DumpDirectiveTest {
|
||||||
public void dumpTime() {
|
public void dumpTime() {
|
||||||
|
|
||||||
String varName = "time";
|
String varName = "time";
|
||||||
Time time = new Time(1302297332043L);
|
|
||||||
Map<String, Object> dataModel = new HashMap<String, Object>();
|
Map<String, Object> dataModel = new HashMap<String, Object>();
|
||||||
|
|
||||||
|
Time time = new Time(1302297332043L);
|
||||||
dataModel.put(varName, time);
|
dataModel.put(varName, time);
|
||||||
|
|
||||||
Map<String, Object> expected = new HashMap<String, Object>();
|
Map<String, Object> expected = new HashMap<String, Object>();
|
||||||
|
@ -171,8 +182,9 @@ public class DumpDirectiveTest {
|
||||||
public void dumpHelplessMethod() {
|
public void dumpHelplessMethod() {
|
||||||
|
|
||||||
String varName = "square";
|
String varName = "square";
|
||||||
TemplateMethodModel value = new HelplessMethod();
|
|
||||||
Map<String, Object> dataModel = new HashMap<String, Object>();
|
Map<String, Object> dataModel = new HashMap<String, Object>();
|
||||||
|
|
||||||
|
TemplateMethodModel value = new HelplessMethod();
|
||||||
dataModel.put(varName, value);
|
dataModel.put(varName, value);
|
||||||
|
|
||||||
Map<String, Object> expected = new HashMap<String, Object>();
|
Map<String, Object> expected = new HashMap<String, Object>();
|
||||||
|
@ -187,8 +199,9 @@ public class DumpDirectiveTest {
|
||||||
public void dumpHelpfulMethod() {
|
public void dumpHelpfulMethod() {
|
||||||
|
|
||||||
String varName = "square";
|
String varName = "square";
|
||||||
TemplateMethodModel value = new HelpfulMethod();
|
|
||||||
Map<String, Object> dataModel = new HashMap<String, Object>();
|
Map<String, Object> dataModel = new HashMap<String, Object>();
|
||||||
|
|
||||||
|
TemplateMethodModel value = new HelpfulMethod();
|
||||||
dataModel.put(varName, value);
|
dataModel.put(varName, value);
|
||||||
|
|
||||||
Map<String, Object> expected = new HashMap<String, Object>();
|
Map<String, Object> expected = new HashMap<String, Object>();
|
||||||
|
@ -203,8 +216,9 @@ public class DumpDirectiveTest {
|
||||||
public void dumpMethodWithBadHelp() {
|
public void dumpMethodWithBadHelp() {
|
||||||
|
|
||||||
String varName = "square";
|
String varName = "square";
|
||||||
TemplateMethodModel value = new MethodWithBadHelp();
|
|
||||||
Map<String, Object> dataModel = new HashMap<String, Object>();
|
Map<String, Object> dataModel = new HashMap<String, Object>();
|
||||||
|
|
||||||
|
TemplateMethodModel value = new MethodWithBadHelp();
|
||||||
dataModel.put(varName, value);
|
dataModel.put(varName, value);
|
||||||
|
|
||||||
Map<String, Object> expected = new HashMap<String, Object>();
|
Map<String, Object> expected = new HashMap<String, Object>();
|
||||||
|
@ -219,8 +233,9 @@ public class DumpDirectiveTest {
|
||||||
public void dumpHelplessDirective() {
|
public void dumpHelplessDirective() {
|
||||||
|
|
||||||
String varName = "dump";
|
String varName = "dump";
|
||||||
TemplateDirectiveModel value = new HelplessDirective();
|
|
||||||
Map<String, Object> dataModel = new HashMap<String, Object>();
|
Map<String, Object> dataModel = new HashMap<String, Object>();
|
||||||
|
|
||||||
|
TemplateDirectiveModel value = new HelplessDirective();
|
||||||
dataModel.put(varName, value);
|
dataModel.put(varName, value);
|
||||||
|
|
||||||
Map<String, Object> expected = new HashMap<String, Object>();
|
Map<String, Object> expected = new HashMap<String, Object>();
|
||||||
|
@ -235,8 +250,9 @@ public class DumpDirectiveTest {
|
||||||
public void dumpHelpfulDirective() {
|
public void dumpHelpfulDirective() {
|
||||||
|
|
||||||
String varName = "dump";
|
String varName = "dump";
|
||||||
TemplateDirectiveModel value = new HelpfulDirective();
|
|
||||||
Map<String, Object> dataModel = new HashMap<String, Object>();
|
Map<String, Object> dataModel = new HashMap<String, Object>();
|
||||||
|
|
||||||
|
TemplateDirectiveModel value = new HelpfulDirective();
|
||||||
dataModel.put(varName, value);
|
dataModel.put(varName, value);
|
||||||
|
|
||||||
Map<String, Object> expected = new HashMap<String, Object>();
|
Map<String, Object> expected = new HashMap<String, Object>();
|
||||||
|
@ -251,8 +267,9 @@ public class DumpDirectiveTest {
|
||||||
public void dumpDirectiveWithBadHelp() {
|
public void dumpDirectiveWithBadHelp() {
|
||||||
|
|
||||||
String varName = "dump";
|
String varName = "dump";
|
||||||
TemplateDirectiveModel value = new DirectiveWithBadHelp();
|
|
||||||
Map<String, Object> dataModel = new HashMap<String, Object>();
|
Map<String, Object> dataModel = new HashMap<String, Object>();
|
||||||
|
|
||||||
|
TemplateDirectiveModel value = new DirectiveWithBadHelp();
|
||||||
dataModel.put(varName, value);
|
dataModel.put(varName, value);
|
||||||
|
|
||||||
Map<String, Object> expected = new HashMap<String, Object>();
|
Map<String, Object> expected = new HashMap<String, Object>();
|
||||||
|
@ -268,6 +285,7 @@ public class DumpDirectiveTest {
|
||||||
|
|
||||||
String varName = "fruit";
|
String varName = "fruit";
|
||||||
Map<String, Object> dataModel = new HashMap<String, Object>();
|
Map<String, Object> dataModel = new HashMap<String, Object>();
|
||||||
|
|
||||||
List<String> list = new ArrayList<String>();
|
List<String> list = new ArrayList<String>();
|
||||||
list.add("apples");
|
list.add("apples");
|
||||||
list.add("bananas");
|
list.add("bananas");
|
||||||
|
@ -277,36 +295,38 @@ public class DumpDirectiveTest {
|
||||||
Map<String, Object> expected = new HashMap<String, Object>();
|
Map<String, Object> expected = new HashMap<String, Object>();
|
||||||
expected.put("name", varName);
|
expected.put("name", varName);
|
||||||
expected.put("type", "Sequence");
|
expected.put("type", "Sequence");
|
||||||
List<Map<String, Object>> listDump = new ArrayList<Map<String, Object>>();
|
List<Map<String, Object>> dump = new ArrayList<Map<String, Object>>();
|
||||||
for ( String str : list) {
|
for ( String str : list) {
|
||||||
Map<String, Object> map = new HashMap<String, Object>();
|
Map<String, Object> map = new HashMap<String, Object>();
|
||||||
map.put("type", "String");
|
map.put("type", "String");
|
||||||
map.put("value", str);
|
map.put("value", str);
|
||||||
listDump.add(map);
|
dump.add(map);
|
||||||
}
|
}
|
||||||
expected.put("value", listDump);
|
expected.put("value", dump);
|
||||||
|
|
||||||
test(varName, dataModel, expected);
|
test(varName, dataModel, expected);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void dumpStringArray() {
|
public void dumpStringArray() {
|
||||||
|
|
||||||
String varName = "fruit";
|
String varName = "fruit";
|
||||||
Map<String, Object> dataModel = new HashMap<String, Object>();
|
Map<String, Object> dataModel = new HashMap<String, Object>();
|
||||||
|
|
||||||
String[] list = { "apples", "bananas", "oranges" };
|
String[] list = { "apples", "bananas", "oranges" };
|
||||||
dataModel.put(varName, list);
|
dataModel.put(varName, list);
|
||||||
|
|
||||||
Map<String, Object> expected = new HashMap<String, Object>();
|
Map<String, Object> expected = new HashMap<String, Object>();
|
||||||
expected.put("name", varName);
|
expected.put("name", varName);
|
||||||
expected.put("type", "Sequence");
|
expected.put("type", "Sequence");
|
||||||
List<Map<String, Object>> listDump = new ArrayList<Map<String, Object>>();
|
List<Map<String, Object>> dump = new ArrayList<Map<String, Object>>();
|
||||||
for ( String str : list) {
|
for ( String str : list) {
|
||||||
Map<String, Object> map = new HashMap<String, Object>();
|
Map<String, Object> map = new HashMap<String, Object>();
|
||||||
map.put("type", "String");
|
map.put("type", "String");
|
||||||
map.put("value", str);
|
map.put("value", str);
|
||||||
listDump.add(map);
|
dump.add(map);
|
||||||
}
|
}
|
||||||
expected.put("value", listDump);
|
expected.put("value", dump);
|
||||||
|
|
||||||
test(varName, dataModel, expected);
|
test(varName, dataModel, expected);
|
||||||
}
|
}
|
||||||
|
@ -316,6 +336,7 @@ public class DumpDirectiveTest {
|
||||||
|
|
||||||
String varName = "stuff";
|
String varName = "stuff";
|
||||||
Map<String, Object> dataModel = new HashMap<String, Object>();
|
Map<String, Object> dataModel = new HashMap<String, Object>();
|
||||||
|
|
||||||
List<Object> list = new ArrayList<Object>();
|
List<Object> list = new ArrayList<Object>();
|
||||||
list.add("apples");
|
list.add("apples");
|
||||||
list.add(4);
|
list.add(4);
|
||||||
|
@ -332,36 +353,95 @@ public class DumpDirectiveTest {
|
||||||
expected.put("name", varName);
|
expected.put("name", varName);
|
||||||
expected.put("type", "Sequence");
|
expected.put("type", "Sequence");
|
||||||
|
|
||||||
List<Map<String, Object>> listValue = new ArrayList<Map<String, Object>>();
|
List<Map<String, Object>> dump = new ArrayList<Map<String, Object>>();
|
||||||
|
|
||||||
Map<String, Object> stringMap = new HashMap<String, Object>();
|
Map<String, Object> stringMap = new HashMap<String, Object>();
|
||||||
stringMap.put("type", "String");
|
stringMap.put("type", "String");
|
||||||
stringMap.put("value", "apples");
|
stringMap.put("value", "apples");
|
||||||
listValue.add(stringMap);
|
dump.add(stringMap);
|
||||||
|
|
||||||
Map<String, Object> numberMap = new HashMap<String, Object>();
|
Map<String, Object> numberMap = new HashMap<String, Object>();
|
||||||
numberMap.put("type", "Number");
|
numberMap.put("type", "Number");
|
||||||
numberMap.put("value", 4);
|
numberMap.put("value", 4);
|
||||||
listValue.add(numberMap);
|
dump.add(numberMap);
|
||||||
|
|
||||||
Map<String, Object> booleanMap = new HashMap<String, Object>();
|
Map<String, Object> booleanMap = new HashMap<String, Object>();
|
||||||
booleanMap.put("type", "Boolean");
|
booleanMap.put("type", "Boolean");
|
||||||
booleanMap.put("value", false);
|
booleanMap.put("value", false);
|
||||||
listValue.add(booleanMap);
|
dump.add(booleanMap);
|
||||||
|
|
||||||
Map<String, Object> sequenceMap = new HashMap<String, Object>();
|
Map<String, Object> sequenceMap = new HashMap<String, Object>();
|
||||||
sequenceMap.put("type", "Sequence");
|
sequenceMap.put("type", "Sequence");
|
||||||
List<Map<String, Object>> animalList = new ArrayList<Map<String, Object>>();
|
List<Map<String, Object>> animalDump = new ArrayList<Map<String, Object>>();
|
||||||
for ( String animal : animals ) {
|
for ( String animal : animals ) {
|
||||||
Map<String, Object> animalMap = new HashMap<String, Object>();
|
Map<String, Object> animalMap = new HashMap<String, Object>();
|
||||||
animalMap.put("type", "String");
|
animalMap.put("type", "String");
|
||||||
animalMap.put("value", animal);
|
animalMap.put("value", animal);
|
||||||
animalList.add(animalMap);
|
animalDump.add(animalMap);
|
||||||
}
|
}
|
||||||
sequenceMap.put("value", animalList);
|
sequenceMap.put("value", animalDump);
|
||||||
listValue.add(sequenceMap);
|
dump.add(sequenceMap);
|
||||||
|
|
||||||
expected.put("value", listValue);
|
expected.put("value", dump);
|
||||||
|
|
||||||
|
test(varName, dataModel, expected);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void dumpNumberSet() {
|
||||||
|
|
||||||
|
String varName = "oddNums";
|
||||||
|
Map<String, Object> dataModel = new HashMap<String, Object>();
|
||||||
|
|
||||||
|
Set<Integer> odds = new HashSet<Integer>();
|
||||||
|
for (int i=0; i <= 10; i++) {
|
||||||
|
if (i % 2 == 1) {
|
||||||
|
odds.add(i);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
dataModel.put(varName, odds);
|
||||||
|
|
||||||
|
Map<String, Object> expected = new HashMap<String, Object>();
|
||||||
|
expected.put("name", varName);
|
||||||
|
expected.put("type", "Sequence");
|
||||||
|
List<Map<String, Object>> dump = new ArrayList<Map<String, Object>>();
|
||||||
|
for ( int i : odds ) {
|
||||||
|
Map<String, Object> map = new HashMap<String, Object>();
|
||||||
|
map.put("type", "Number");
|
||||||
|
map.put("value", i);
|
||||||
|
dump.add(map);
|
||||||
|
}
|
||||||
|
expected.put("value", dump);
|
||||||
|
|
||||||
|
test(varName, dataModel, expected);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void dumpNumberCollection() {
|
||||||
|
|
||||||
|
String varName = "oddNums";
|
||||||
|
Map<String, Object> dataModel = new HashMap<String, Object>();
|
||||||
|
|
||||||
|
Set<Integer> odds = new HashSet<Integer>();
|
||||||
|
for (int i=0; i <= 10; i++) {
|
||||||
|
if (i % 2 == 1) {
|
||||||
|
odds.add(i);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
TemplateCollectionModel collection = new SimpleCollection(odds);
|
||||||
|
dataModel.put(varName, collection);
|
||||||
|
|
||||||
|
Map<String, Object> expected = new HashMap<String, Object>();
|
||||||
|
expected.put("name", varName);
|
||||||
|
expected.put("type", "Collection");
|
||||||
|
List<Map<String, Object>> dump = new ArrayList<Map<String, Object>>();
|
||||||
|
for ( int i : odds ) {
|
||||||
|
Map<String, Object> map = new HashMap<String, Object>();
|
||||||
|
map.put("type", "Number");
|
||||||
|
map.put("value", i);
|
||||||
|
dump.add(map);
|
||||||
|
}
|
||||||
|
expected.put("value", dump);
|
||||||
|
|
||||||
test(varName, dataModel, expected);
|
test(varName, dataModel, expected);
|
||||||
}
|
}
|
||||||
|
@ -373,11 +453,35 @@ public class DumpDirectiveTest {
|
||||||
|
|
||||||
// RY Do these with different BeansWrappers
|
// RY Do these with different BeansWrappers
|
||||||
@Test
|
@Test
|
||||||
public void dumpHashEx() {
|
public void dumpStringToStringMap() {
|
||||||
|
|
||||||
|
String varName = "capitals";
|
||||||
|
Map<String, Object> dataModel = new HashMap<String, Object>();
|
||||||
|
|
||||||
|
Map<String, String> capitals = new HashMap<String, String>();
|
||||||
|
capitals.put("Albany", "New York");
|
||||||
|
capitals.put("St. Paul", "Minnesota");
|
||||||
|
capitals.put("Austin", "Texas");
|
||||||
|
capitals.put("Sacramento", "California");
|
||||||
|
capitals.put("Richmond", "Virginia");
|
||||||
|
dataModel.put(varName, capitals);
|
||||||
|
|
||||||
|
Map<String, Object> expected = new HashMap<String, Object>();
|
||||||
|
expected.put("name", varName);
|
||||||
|
expected.put("type", "HashEx");
|
||||||
|
Map<String, Object> dump = new HashMap<String, Object>();
|
||||||
|
for ( String key : capitals.keySet() ) {
|
||||||
|
Map<String, String> capitalDump = new HashMap<String, String>();
|
||||||
|
capitalDump.put("type", "String");
|
||||||
|
capitalDump.put("value", capitals.get(key));
|
||||||
|
dump.put(key, capitalDump);
|
||||||
|
}
|
||||||
|
expected.put("value", dump);
|
||||||
|
|
||||||
|
test(varName, dataModel, expected);
|
||||||
}
|
}
|
||||||
|
|
||||||
/////////////////////////// Private helper classes and methods ///////////////////////////
|
/////////////////////////// Private stub classes and helper methods ///////////////////////////
|
||||||
|
|
||||||
private void test(String varName, Map<String, Object> dataModel, Map<String, Object> expected) {
|
private void test(String varName, Map<String, Object> dataModel, Map<String, Object> expected) {
|
||||||
try {
|
try {
|
||||||
|
|
Loading…
Add table
Reference in a new issue