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);
|
String methodDisplayName = getMethodDisplayName(method);
|
||||||
if ( ! methodDisplayName.endsWith(")") ) {
|
if ( ! methodDisplayName.endsWith(")") ) {
|
||||||
try {
|
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);
|
Object result = method.invoke(object);
|
||||||
log.debug("Result of invoking method " + method.getName() + " is an object of type " + result.getClass().getName());
|
log.debug("Result of invoking method " + method.getName() + " is an object of type " + result.getClass().getName());
|
||||||
if (result instanceof TemplateModel) {
|
if (result instanceof TemplateModel) {
|
||||||
|
@ -355,6 +358,8 @@ public abstract class BaseDumpDirective implements TemplateDirectiveModel {
|
||||||
// Include only methods included in keys(). This factors in visibility
|
// Include only methods included in keys(). This factors in visibility
|
||||||
// defined by the model's BeansWrapper.
|
// 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);
|
availableMethods.add(method);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -25,9 +25,10 @@ import org.junit.Before;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
|
||||||
import freemarker.core.Environment;
|
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.DateType;
|
||||||
import freemarker.ext.dump.BaseDumpDirective.Key;
|
import freemarker.ext.dump.BaseDumpDirective.Key;
|
||||||
|
import freemarker.ext.dump.BaseDumpDirective.Type;
|
||||||
import freemarker.template.Configuration;
|
import freemarker.template.Configuration;
|
||||||
import freemarker.template.SimpleCollection;
|
import freemarker.template.SimpleCollection;
|
||||||
import freemarker.template.Template;
|
import freemarker.template.Template;
|
||||||
|
@ -463,8 +464,6 @@ public class DumpDirectiveTest {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// RY Do these with different BeansWrappers
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void dumpStringToStringMap() {
|
public void dumpStringToStringMap() {
|
||||||
|
|
||||||
|
@ -585,40 +584,84 @@ public class DumpDirectiveTest {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void dumpObject() {
|
public void dumpObjectWithExposeNothingWrapper() {
|
||||||
|
|
||||||
String varName = "employee";
|
String varName = "employee";
|
||||||
Map<String, Object> dataModel = new HashMap<String, Object>();
|
Map<String, Object> dataModel = new HashMap<String, Object>();
|
||||||
|
BeansWrapper wrapper = new BeansWrapper();
|
||||||
Calendar c = Calendar.getInstance();
|
wrapper.setExposureLevel(BeansWrapper.EXPOSE_NOTHING);
|
||||||
c.set(75, Calendar.MAY, 5);
|
try {
|
||||||
Employee jdoe = new Employee("John", "Doe", c.getTime(), 34523);
|
dataModel.put("employee", wrapper.wrap(getEmployee()));
|
||||||
|
} catch (TemplateModelException e) {
|
||||||
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);
|
|
||||||
|
|
||||||
Map<String, Object> expectedDump = new HashMap<String, Object>();
|
Map<String, Object> expectedDump = new HashMap<String, Object>();
|
||||||
expectedDump.put(Key.NAME.toString(), varName);
|
expectedDump.put(Key.NAME.toString(), varName);
|
||||||
expectedDump.put(Key.TYPE.toString(), "freemarker.ext.dump.DumpDirectiveTest$Employee");
|
expectedDump.put(Key.TYPE.toString(), "freemarker.ext.dump.DumpDirectiveTest$Employee");
|
||||||
|
expectedDump.put(Key.VALUE.toString(), new HashMap<String, Object>());
|
||||||
//test(varName, dataModel, expectedDump);
|
test(varName, dataModel, expectedDump);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void dumpObjectWithExposePropertiesOnlyWrapper() {
|
||||||
|
|
||||||
|
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 stub classes and helper methods ///////////////////////////
|
||||||
|
|
||||||
private void test(String varName, Map<String, Object> dataModel, Map<String, Object> expectedDump) {
|
private void test(String varName, Map<String, Object> dataModel, Map<String, Object> expectedDump) {
|
||||||
|
@ -816,4 +859,28 @@ public class DumpDirectiveTest {
|
||||||
return supervisees;
|
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