Package freemarker.template
Class SimpleHash
java.lang.Object
freemarker.template.WrappingTemplateModel
freemarker.template.SimpleHash
- All Implemented Interfaces:
TemplateHashModel,TemplateHashModelEx,TemplateModel,Serializable
A simple implementation of the TemplateHashModelEx
interface, using an underlying Map or SortedMap.
This class is thread-safe if you don't call the put or remove methods after you have made the object available for multiple threads.
Note:
As of 2.0, this class is unsynchronized by default.
To obtain a synchronized wrapper, call the synchronizedWrapper() method.
- See Also:
-
Nested Class Summary
Nested classes/interfaces inherited from interface freemarker.template.TemplateModel
TemplateModel.InvalidExpressionModel, TemplateModel.JavaNull -
Field Summary
Fields inherited from interface freemarker.template.TemplateModel
INVALID_EXPRESSION, JAVA_NULL, NOTHING -
Constructor Summary
ConstructorsConstructorDescriptionConstructs an empty hash that uses the default wrapper set inWrappingTemplateModel.setDefaultObjectWrapper(ObjectWrapper).SimpleHash(ObjectWrapper wrapper) Creates an empty simple hash using the specified object wrapper.SimpleHash(Map map) Creates a new simple hash with the copy of the underlying map and the default wrapper set inWrappingTemplateModel.setDefaultObjectWrapper(ObjectWrapper).SimpleHash(Map map, ObjectWrapper wrapper) Creates a new simple hash with the copy of the underlying map and either the default wrapper set inWrappingTemplateModel.setDefaultObjectWrapper(ObjectWrapper), or theJavaBeans wrapper. -
Method Summary
Modifier and TypeMethodDescriptionprotected MapGets a TemplateModel from the hash.booleanisEmpty()keys()voidPuts a boolean in the mapvoidAdds a key-value entry to the map.voidAdds all the key/value entries in the mapvoidRemoves the given key from the underlying map.intsize()toMap()Note that this method creates and returns a deep-copy of the underlying hash used internally.toString()Convenience method for returning the String value of the underlying map.values()Methods inherited from class freemarker.template.WrappingTemplateModel
getDefaultObjectWrapper, getObjectWrapper, setDefaultObjectWrapper, setObjectWrapper, wrap
-
Constructor Details
-
SimpleHash
public SimpleHash()Constructs an empty hash that uses the default wrapper set inWrappingTemplateModel.setDefaultObjectWrapper(ObjectWrapper). -
SimpleHash
Creates a new simple hash with the copy of the underlying map and the default wrapper set inWrappingTemplateModel.setDefaultObjectWrapper(ObjectWrapper). -
SimpleHash
Creates an empty simple hash using the specified object wrapper.- Parameters:
wrapper- The object wrapper to use to wrap objects intoTemplateModelinstances. If null, the default wrapper set inWrappingTemplateModel.setDefaultObjectWrapper(ObjectWrapper)is used.
-
SimpleHash
Creates a new simple hash with the copy of the underlying map and either the default wrapper set inWrappingTemplateModel.setDefaultObjectWrapper(ObjectWrapper), or theJavaBeans wrapper.- Parameters:
map- The Map to use for the key/value pairs. It makes a copy for internal use. If the map implements theSortedMapinterface, the internal copy will be aTreeMap, otherwise it will be awrapper- The object wrapper to use to wrap objects intoTemplateModelinstances. If null, the default wrapper set inWrappingTemplateModel.setDefaultObjectWrapper(ObjectWrapper)is used.
-
-
Method Details
-
copyMap
-
put
Adds a key-value entry to the map.- Parameters:
key- the name by which the object is identified in the template.obj- the object to store.
-
put
Puts a boolean in the map- Parameters:
key- the name by which the resulting TemplateModel is identified in the template.b- the boolean to store.
-
get
Description copied from interface:TemplateHashModelGets a TemplateModel from the hash.- Specified by:
getin interfaceTemplateHashModel- Parameters:
key- the name by which the TemplateModel is identified in the template.- Returns:
- the TemplateModel referred to by the key, or null if not found.
- Throws:
TemplateModelException
-
remove
Removes the given key from the underlying map.- Parameters:
key- the key to be removed
-
putAll
Adds all the key/value entries in the map- Parameters:
m- the map with the entries to add, the keys are assumed to be strings.
-
toMap
Note that this method creates and returns a deep-copy of the underlying hash used internally. This could be a gotcha for some people at some point who want to alter something in the data model, but we should maintain our immutability semantics (at least using default SimpleXXX wrappers) for the data model. It will recursively unwrap the stuff in the underlying container.- Throws:
TemplateModelException
-
toString
Convenience method for returning the String value of the underlying map. -
size
public int size()- Specified by:
sizein interfaceTemplateHashModelEx- Returns:
- the number of key/value mappings in the hash.
-
isEmpty
public boolean isEmpty()- Specified by:
isEmptyin interfaceTemplateHashModel
-
keys
- Specified by:
keysin interfaceTemplateHashModelEx- Returns:
- a collection containing the keys in the hash. Every element of
the returned collection must implement the
TemplateScalarModel(as the keys of hashes are always strings).
-
values
- Specified by:
valuesin interfaceTemplateHashModelEx- Returns:
- a collection containing the values in the hash.
-
synchronizedWrapper
-