Class JythonWrapper

  • All Implemented Interfaces:
    ObjectWrapper

    public class JythonWrapper
    extends Object
    implements ObjectWrapper
    An object wrapper that wraps Jython objects into FreeMarker template models and vice versa.
    • Constructor Detail

      • JythonWrapper

        public JythonWrapper()
    • Method Detail

      • setUseCache

        public void setUseCache​(boolean useCache)
        Sets whether this wrapper caches model instances. Default is false. When set to true, calling wrap(Object) multiple times for the same object will return the same model.
      • setAttributesShadowItems

        public void setAttributesShadowItems​(boolean attributesShadowItems)
        Sets whether attributes shadow items in wrapped objects. When true (this is the default value), ${object.name} will first try to locate a python attribute with the specified name on the object using PyObject.__findattr__(java.lang.String), and only if it doesn't find the attribute will it call PyObject.__getitem__(org.python.core.PyObject). When set to false, the lookup order is reversed and items are looked up before attributes.
      • unwrap

        public PyObject unwrap​(TemplateModel model)
                        throws TemplateModelException
        Coerces a template model into a PyObject.
        Parameters:
        model - the model to coerce
        Returns:
        the coerced model.
        • AdapterTemplateModels (i.e. BeanModel) are marshalled using the standard Python marshaller Py.java2py(Object) on the result of getWrappedObject(PyObject.class)s. The native JythonModel instances will just return the underlying PyObject.
        • All other models that are scalars are marshalled as PyString.
        • All other models that are numbers are marshalled using the standard Python marshaller Py.java2py(Object) on their underlying Number
        • All other models are marshalled to a generic internal PyObject subclass that'll correctly pass __finditem__, __len__, __nonzero__, and __call__ invocations to appropriate hash, sequence, and method models.
        Throws:
        TemplateModelException