freemarker.ext.beans

Class MapModel

Implemented Interfaces:
AdapterTemplateModel, TemplateHashModel, TemplateHashModelEx, TemplateMethodModel, TemplateMethodModelEx, TemplateModel, TemplateScalarModel, WrapperTemplateModel

public class MapModel
extends StringModel
implements TemplateMethodModelEx

A special case of BeanModel that adds implementation for TemplateMethodModelEx 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 from BeanModel 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 obtain TemplateCollectionModel instances for various aspects of the map.

Version:
$Id: MapModel.java,v 1.26.2.3 2006/02/26 18:26:37 revusky Exp $
Author:
Attila Szegedi

Field Summary

Fields inherited from class freemarker.ext.beans.BeanModel

object, wrapper

Fields inherited from interface freemarker.template.TemplateModel

NOTHING

Fields inherited from interface freemarker.template.TemplateScalarModel

EMPTY_STRING

Constructor Summary

MapModel(Map map, BeansWrapper wrapper)
Creates a new model that wraps the specified map object.

Method Summary

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, getWrappedObject, hasPlainGetMethod, invokeGenericGet, isEmpty, keySet, keys, size, toString, unwrap, values, wrap

Constructor Details

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 - the BeansWrapper associated with this model. Every model has to have an associated BeansWrapper instance. The model gains many attributes from its wrapper, including the caching behavior, method exposure level, method-over-item shadowing policy etc.

Method Details

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 interface TemplateMethodModel

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 interface BeanModel

isEmpty

public boolean isEmpty()
Tells whether the model is empty. It is empty if either the wrapped object is null, or it is a Boolean with false value.
Specified by:
isEmpty in interface TemplateHashModel
Overrides:
isEmpty in interface BeanModel

keySet

protected Set keySet()
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.
Overrides:
keySet in interface BeanModel

size

public int size()
Specified by:
size in interface TemplateHashModelEx
Overrides:
size in interface BeanModel