Add utility method wrap to use a non-default BeansWrapper to wrap an object.

This commit is contained in:
ryounes 2011-04-13 20:01:26 +00:00
parent 1d2e1009e5
commit 013ef73278
2 changed files with 10 additions and 7 deletions

View file

@ -282,20 +282,23 @@ public class FreemarkerHttpServlet extends VitroHttpServlet {
return UrlBuilder.getUrl(path);
}
protected BeansWrapper getNonDefaultBeansWrapper(int exposureLevel) {
protected TemplateModel wrap(int exposureLevel, Object obj) throws TemplateModelException {
BeansWrapper wrapper = getBeansWrapper(exposureLevel);
return wrapper.wrap(obj);
}
protected BeansWrapper getBeansWrapper(int exposureLevel) {
BeansWrapper wrapper = new DefaultObjectWrapper();
wrapper.setExposureLevel(exposureLevel);
return wrapper;
}
private TemplateModel getTagList() {
private TemplateModel getTagList() {
// For script and stylesheet lists, use an object wrapper that exposes write methods,
// instead of the configuration's object wrapper, which doesn't. The templates can
// add stylesheets and scripts to the lists by calling their add() methods.
BeansWrapper wrapper = getNonDefaultBeansWrapper(BeansWrapper.EXPOSE_SAFE);
try {
return wrapper.wrap(new Tags());
return wrap(BeansWrapper.EXPOSE_SAFE, new Tags());
} catch (TemplateModelException e) {
log.error("Error creating Tags template model");
return null;

View file

@ -133,7 +133,7 @@ public class IndividualController extends FreemarkerHttpServlet {
* This is still safe, because we are only putting BaseTemplateModel objects
* into the data model: no real data can be modified.
*/
body.put("individual", getNonDefaultBeansWrapper(BeansWrapper.EXPOSE_SAFE).wrap(itm));
body.put("individual", wrap(BeansWrapper.EXPOSE_SAFE, itm));
body.put("headContent", getRdfLinkTag(itm));
String template = getIndividualTemplate(individual, vreq);