NIHVIVO-1562 Test for object dump with EXPOSE_NOTHING BeansWrapper
This commit is contained in:
parent
f1288b90b5
commit
1d2e1009e5
2 changed files with 101 additions and 29 deletions
|
@ -275,6 +275,9 @@ public abstract class BaseDumpDirective implements TemplateDirectiveModel {
|
|||
String methodDisplayName = getMethodDisplayName(method);
|
||||
if ( ! methodDisplayName.endsWith(")") ) {
|
||||
try {
|
||||
// See note in getAvailableMethods: when we have the keys, we can get the values without
|
||||
// now invoking the method. Then getMethodsAvailableToTemplate should pass back
|
||||
// a map of keys to values.
|
||||
Object result = method.invoke(object);
|
||||
log.debug("Result of invoking method " + method.getName() + " is an object of type " + result.getClass().getName());
|
||||
if (result instanceof TemplateModel) {
|
||||
|
@ -354,7 +357,9 @@ public abstract class BaseDumpDirective implements TemplateDirectiveModel {
|
|||
|
||||
// Include only methods included in keys(). This factors in visibility
|
||||
// defined by the model's BeansWrapper.
|
||||
if (keySet.contains(method.getName())) {
|
||||
if (keySet.contains(method.getName())) {
|
||||
// if the key has a value, we could add it here rather than invoking the
|
||||
// method later
|
||||
availableMethods.add(method);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -25,9 +25,10 @@ import org.junit.Before;
|
|||
import org.junit.Test;
|
||||
|
||||
import freemarker.core.Environment;
|
||||
import freemarker.ext.dump.BaseDumpDirective.Type;
|
||||
import freemarker.ext.beans.BeansWrapper;
|
||||
import freemarker.ext.dump.BaseDumpDirective.DateType;
|
||||
import freemarker.ext.dump.BaseDumpDirective.Key;
|
||||
import freemarker.ext.dump.BaseDumpDirective.Type;
|
||||
import freemarker.template.Configuration;
|
||||
import freemarker.template.SimpleCollection;
|
||||
import freemarker.template.Template;
|
||||
|
@ -463,8 +464,6 @@ public class DumpDirectiveTest {
|
|||
|
||||
}
|
||||
|
||||
// RY Do these with different BeansWrappers
|
||||
|
||||
@Test
|
||||
public void dumpStringToStringMap() {
|
||||
|
||||
|
@ -583,42 +582,86 @@ public class DumpDirectiveTest {
|
|||
|
||||
test(varName, dataModel, expectedDump);
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
public void dumpObject() {
|
||||
public void dumpObjectWithExposeNothingWrapper() {
|
||||
|
||||
String varName = "employee";
|
||||
Map<String, Object> dataModel = new HashMap<String, Object>();
|
||||
|
||||
Calendar c = Calendar.getInstance();
|
||||
c.set(75, Calendar.MAY, 5);
|
||||
Employee jdoe = new Employee("John", "Doe", c.getTime(), 34523);
|
||||
|
||||
c.set(65, Calendar.AUGUST, 10);
|
||||
Employee jsmith = new Employee("Jane", "Smith", c.getTime(), 78234);
|
||||
|
||||
c.set(80, Calendar.JUNE, 20);
|
||||
Employee mjones = new Employee("Michael", "Jones", c.getTime(), 65432);
|
||||
|
||||
c.set(81, Calendar.NOVEMBER, 30);
|
||||
Employee mturner = new Employee("Mary", "Turner", c.getTime(), 89531);
|
||||
|
||||
List<Employee> supervisees = new ArrayList<Employee>();
|
||||
supervisees.add(mjones);
|
||||
supervisees.add(mturner);
|
||||
jdoe.setSupervisor(jsmith);
|
||||
jdoe.setSupervisees(supervisees);
|
||||
jdoe.setSalary(65000);
|
||||
|
||||
dataModel.put("employee", jdoe);
|
||||
BeansWrapper wrapper = new BeansWrapper();
|
||||
wrapper.setExposureLevel(BeansWrapper.EXPOSE_NOTHING);
|
||||
try {
|
||||
dataModel.put("employee", wrapper.wrap(getEmployee()));
|
||||
} catch (TemplateModelException e) {
|
||||
// ??
|
||||
}
|
||||
|
||||
Map<String, Object> expectedDump = new HashMap<String, Object>();
|
||||
expectedDump.put(Key.NAME.toString(), varName);
|
||||
expectedDump.put(Key.TYPE.toString(), "freemarker.ext.dump.DumpDirectiveTest$Employee");
|
||||
expectedDump.put(Key.VALUE.toString(), new HashMap<String, Object>());
|
||||
test(varName, dataModel, expectedDump);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void dumpObjectWithExposePropertiesOnlyWrapper() {
|
||||
|
||||
//test(varName, dataModel, expectedDump);
|
||||
String varName = "employee";
|
||||
Map<String, Object> dataModel = new HashMap<String, Object>();
|
||||
BeansWrapper wrapper = new BeansWrapper();
|
||||
wrapper.setExposureLevel(BeansWrapper.EXPOSE_NOTHING);
|
||||
try {
|
||||
dataModel.put("employee", wrapper.wrap(getEmployee()));
|
||||
} catch (TemplateModelException e) {
|
||||
// ??
|
||||
}
|
||||
|
||||
Map<String, Object> expectedDump = new HashMap<String, Object>();
|
||||
expectedDump.put(Key.NAME.toString(), varName);
|
||||
expectedDump.put(Key.TYPE.toString(), "freemarker.ext.dump.DumpDirectiveTest$Employee");
|
||||
expectedDump.put(Key.VALUE.toString(), new HashMap<String, Object>());
|
||||
test(varName, dataModel, expectedDump);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void dumpObjectWithExposeSafeWrapper() {
|
||||
|
||||
String varName = "employee";
|
||||
Map<String, Object> dataModel = new HashMap<String, Object>();
|
||||
BeansWrapper wrapper = new BeansWrapper();
|
||||
wrapper.setExposureLevel(BeansWrapper.EXPOSE_NOTHING);
|
||||
try {
|
||||
dataModel.put("employee", wrapper.wrap(getEmployee()));
|
||||
} catch (TemplateModelException e) {
|
||||
// ??
|
||||
}
|
||||
|
||||
Map<String, Object> expectedDump = new HashMap<String, Object>();
|
||||
expectedDump.put(Key.NAME.toString(), varName);
|
||||
expectedDump.put(Key.TYPE.toString(), "freemarker.ext.dump.DumpDirectiveTest$Employee");
|
||||
expectedDump.put(Key.VALUE.toString(), new HashMap<String, Object>());
|
||||
test(varName, dataModel, expectedDump);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void dumpObjectWithExposeAllWrapper() {
|
||||
|
||||
String varName = "employee";
|
||||
Map<String, Object> dataModel = new HashMap<String, Object>();
|
||||
BeansWrapper wrapper = new BeansWrapper();
|
||||
wrapper.setExposureLevel(BeansWrapper.EXPOSE_NOTHING);
|
||||
try {
|
||||
dataModel.put("employee", wrapper.wrap(getEmployee()));
|
||||
} catch (TemplateModelException e) {
|
||||
// ??
|
||||
}
|
||||
|
||||
Map<String, Object> expectedDump = new HashMap<String, Object>();
|
||||
expectedDump.put(Key.NAME.toString(), varName);
|
||||
expectedDump.put(Key.TYPE.toString(), "freemarker.ext.dump.DumpDirectiveTest$Employee");
|
||||
expectedDump.put(Key.VALUE.toString(), new HashMap<String, Object>());
|
||||
test(varName, dataModel, expectedDump);
|
||||
}
|
||||
/////////////////////////// Private stub classes and helper methods ///////////////////////////
|
||||
|
||||
private void test(String varName, Map<String, Object> dataModel, Map<String, Object> expectedDump) {
|
||||
|
@ -816,4 +859,28 @@ public class DumpDirectiveTest {
|
|||
return supervisees;
|
||||
}
|
||||
}
|
||||
|
||||
private Employee getEmployee() {
|
||||
Calendar c = Calendar.getInstance();
|
||||
c.set(75, Calendar.MAY, 5);
|
||||
Employee jdoe = new Employee("John", "Doe", c.getTime(), 34523);
|
||||
|
||||
c.set(65, Calendar.AUGUST, 10);
|
||||
Employee jsmith = new Employee("Jane", "Smith", c.getTime(), 78234);
|
||||
|
||||
c.set(80, Calendar.JUNE, 20);
|
||||
Employee mjones = new Employee("Michael", "Jones", c.getTime(), 65432);
|
||||
|
||||
c.set(81, Calendar.NOVEMBER, 30);
|
||||
Employee mturner = new Employee("Mary", "Turner", c.getTime(), 89531);
|
||||
|
||||
List<Employee> supervisees = new ArrayList<Employee>();
|
||||
supervisees.add(mjones);
|
||||
supervisees.add(mturner);
|
||||
jdoe.setSupervisor(jsmith);
|
||||
jdoe.setSupervisees(supervisees);
|
||||
jdoe.setSalary(65000);
|
||||
|
||||
return jdoe;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue