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); 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(); BeansWrapper wrapper = new DefaultObjectWrapper();
wrapper.setExposureLevel(exposureLevel); wrapper.setExposureLevel(exposureLevel);
return wrapper; return wrapper;
} }
private TemplateModel getTagList() { private TemplateModel getTagList() {
// For script and stylesheet lists, use an object wrapper that exposes write methods, // 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 // 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. // add stylesheets and scripts to the lists by calling their add() methods.
BeansWrapper wrapper = getNonDefaultBeansWrapper(BeansWrapper.EXPOSE_SAFE);
try { try {
return wrapper.wrap(new Tags()); return wrap(BeansWrapper.EXPOSE_SAFE, new Tags());
} catch (TemplateModelException e) { } catch (TemplateModelException e) {
log.error("Error creating Tags template model"); log.error("Error creating Tags template model");
return null; return null;

View file

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