diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/freemarker/FreemarkerHttpServlet.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/freemarker/FreemarkerHttpServlet.java index 7e439c1f4..efad50c02 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/freemarker/FreemarkerHttpServlet.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/freemarker/FreemarkerHttpServlet.java @@ -298,6 +298,10 @@ public class FreemarkerHttpServlet extends VitroHttpServlet { return wrapper.wrap(obj); } + protected TemplateModel wrap(Object obj, BeansWrapper wrapper) throws TemplateModelException { + return wrapper.wrap(obj); + } + protected BeansWrapper getBeansWrapper(int exposureLevel) { BeansWrapper wrapper = new DefaultObjectWrapper(); wrapper.setExposureLevel(exposureLevel); diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/web/templatemodels/individual/GroupedPropertyList.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/web/templatemodels/individual/GroupedPropertyList.java index 01f333b7b..d7a732c34 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/web/templatemodels/individual/GroupedPropertyList.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/web/templatemodels/individual/GroupedPropertyList.java @@ -445,11 +445,6 @@ public class GroupedPropertyList extends BaseTemplateModel { } return null; } - - @Deprecated - public PropertyTemplateModel getPropertyAndRemoveFromList(String propertyUri) { - return pullProperty(propertyUri); - } public PropertyTemplateModel pullProperty(String propertyUri) { diff --git a/webapp/src/freemarker/ext/beans/ReadOnlyBeansWrapper.java b/webapp/src/freemarker/ext/beans/ReadOnlyBeansWrapper.java new file mode 100644 index 000000000..3bd07b9d7 --- /dev/null +++ b/webapp/src/freemarker/ext/beans/ReadOnlyBeansWrapper.java @@ -0,0 +1,37 @@ +/* $This file is distributed under the terms of the license in /doc/license.txt$ */ + +package freemarker.ext.beans; + +import java.lang.reflect.Method; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +/** BeansWrapper that is more restrictive than EXPOSE_SAFE, by + * exposing getters but not setters. A setter is defined for this + * purpose as a method that returns void, or whose name + * starts with "set". + * + * @author rjy7 + * + */ +public class ReadOnlyBeansWrapper extends BeansWrapper { + + private static final Log log = LogFactory.getLog(ReadOnlyBeansWrapper.class); + + public ReadOnlyBeansWrapper() { + // Start by exposing all safe methods. + setExposureLevel(EXPOSE_SAFE); + } + + @Override + protected void finetuneMethodAppearance(Class cls, Method method, MethodAppearanceDecision decision) { + + if ( method.getName().startsWith("set") || + method.getReturnType() == null ) { + decision.setExposeMethodAs(null); + } + + } + +}