public class JythonWrapper extends java.lang.Object implements ObjectWrapper
| Modifier and Type | Field and Description |
|---|---|
static JythonWrapper |
INSTANCE |
BEANS_WRAPPER, DEFAULT_WRAPPER, SIMPLE_WRAPPER| Constructor and Description |
|---|
JythonWrapper() |
| Modifier and Type | Method and Description |
|---|---|
void |
setAttributesShadowItems(boolean attributesShadowItems)
Sets whether attributes shadow items in wrapped objects.
|
void |
setUseCache(boolean useCache)
Sets whether this wrapper caches model instances.
|
org.python.core.PyObject |
unwrap(TemplateModel model)
Coerces a template model into a
PyObject. |
TemplateModel |
wrap(java.lang.Object obj)
Wraps the passed Jython object into a FreeMarker template model.
|
public static final JythonWrapper INSTANCE
public void setUseCache(boolean useCache)
wrap(Object) multiple times for
the same object will return the same model.public void setAttributesShadowItems(boolean attributesShadowItems)
${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.public TemplateModel wrap(java.lang.Object obj)
Py.java2py(java.lang.Object). PyDictionary and PyStringMap are wrapped into a hash model, PySequence
descendants are wrapped into a sequence model, PyInteger, PyLong, and PyFloat are wrapped into a number model. All objects
are wrapped into a scalar model (using Object.toString() and a
boolean model (using PyObject.__nonzero__(). For internal
general-purpose PyObjects returned from a call to unwrap(TemplateModel), the template model that was passed to
unwrap is returned.wrap in interface ObjectWrapperobj - The object to wrap into a TemplateModel. If the it already implements TemplateModel,
it should just return the object as is.TemplateModel wrapper of the object passed in. To support un-wrapping, you may consider the
return value to implement WrapperTemplateModel and AdapterTemplateModel.public org.python.core.PyObject unwrap(TemplateModel model) throws TemplateModelException
PyObject.model - the model to coerceAdapterTemplateModels (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.
scalars are
marshalled as PyString.
numbers are
marshalled using the standard Python marshaller
Py.java2py(Object) on their underlying NumberPyObject subclass that'll correctly pass
__finditem__, __len__,
__nonzero__, and __call__ invocations to
appropriate hash, sequence, and method models.TemplateModelException