Package freemarker.ext.beans
Class MapModel
- java.lang.Object
-
- freemarker.ext.beans.BeanModel
-
- freemarker.ext.beans.StringModel
-
- freemarker.ext.beans.MapModel
-
- All Implemented Interfaces:
WrapperTemplateModel
,AdapterTemplateModel
,TemplateHashModel
,TemplateHashModelEx
,TemplateMethodModel
,TemplateMethodModelEx
,TemplateModel
,TemplateModelWithAPISupport
,TemplateScalarModel
public class MapModel extends StringModel implements TemplateMethodModelEx
A special case of
BeanModel
that adds implementation forTemplateMethodModelEx
on map objects that is a shortcut for the Map.get() method. Note that if the passed argument itself is a reflection-wrapper model, then the map lookup will be performed using the wrapped object as the key. Note that you can call get() using the map.key syntax inherited fromBeanModel
as well, however in that case the key is always a string.The class itself does not implement the
TemplateCollectionModel
. You can, however use map.entrySet(), map.keySet(), or map.values() to obtainTemplateCollectionModel
instances for various aspects of the map.
-
-
Field Summary
-
Fields inherited from interface freemarker.template.TemplateModel
NOTHING
-
Fields inherited from interface freemarker.template.TemplateScalarModel
EMPTY_STRING
-
-
Constructor Summary
Constructors Constructor Description MapModel(Map map, BeansWrapper wrapper)
Creates a new model that wraps the specified map object.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description Object
exec(List arguments)
The first argument is used as a key to call the map's get method.protected TemplateModel
invokeGenericGet(Map keyMap, Class clazz, String key)
Overridden to invoke the generic get method by casting to Map instead of through reflection - should yield better performance.boolean
isEmpty()
Tells whether the model is empty.protected Set
keySet()
Helper method to support TemplateHashModelEx.int
size()
-
Methods inherited from class freemarker.ext.beans.StringModel
getAsString
-
Methods inherited from class freemarker.ext.beans.BeanModel
get, getAdaptedObject, getAPI, getWrappedObject, hasPlainGetMethod, keys, toString, unwrap, values, wrap
-
-
-
-
Constructor Detail
-
MapModel
public MapModel(Map map, BeansWrapper wrapper)
Creates a new model that wraps the specified map object.- Parameters:
map
- the map object to wrap into a model.wrapper
- theBeansWrapper
associated with this model. Every model has to have an associatedBeansWrapper
instance. The model gains many attributes from its wrapper, including the caching behavior, method exposure level, method-over-item shadowing policy etc.
-
-
Method Detail
-
exec
public Object exec(List arguments) throws TemplateModelException
The first argument is used as a key to call the map's get method.- Specified by:
exec
in interfaceTemplateMethodModel
- Specified by:
exec
in interfaceTemplateMethodModelEx
- Parameters:
arguments
- aList
ofTemplateModel
-s, containing the arguments passed to the method. If the implementation absolutely wants to operate on POJOs, it can use the static utility methods in theDeepUnwrap
class to easily obtain them. However, unwrapping is not always possible (or not perfectly), and isn't always efficient, so it's recommended to use the originalTemplateModel
value as much as possible.- Returns:
- the return value of the method, or
null
. If the returned value does not implementTemplateModel
, it will be automatically wrapped using theenvironment's object wrapper
. - Throws:
TemplateModelException
-
invokeGenericGet
protected TemplateModel invokeGenericGet(Map keyMap, Class clazz, String key) throws TemplateModelException
Overridden to invoke the generic get method by casting to Map instead of through reflection - should yield better performance.- Overrides:
invokeGenericGet
in classBeanModel
- Throws:
TemplateModelException
-
isEmpty
public boolean isEmpty()
Description copied from class:BeanModel
Tells whether the model is empty. It is empty if either the wrapped object is null, or it's a Boolean with false value.- Specified by:
isEmpty
in interfaceTemplateHashModel
- Overrides:
isEmpty
in classBeanModel
-
size
public int size()
- Specified by:
size
in interfaceTemplateHashModelEx
- Overrides:
size
in classBeanModel
- Returns:
- the number of key/value mappings in the hash.
-
keySet
protected Set keySet()
Description copied from class:BeanModel
Helper method to support TemplateHashModelEx. Returns the Set of Strings which are available via the TemplateHashModel interface. Subclasses that override invokeGenericGet to provide additional hash keys should also override this method.
-
-