Class SimpleHash

All Implemented Interfaces:
TemplateHashModel, TemplateHashModelEx, TemplateModel, Serializable

public class SimpleHash extends WrappingTemplateModel implements TemplateHashModelEx, 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:
  • Constructor Details

  • Method Details

    • copyMap

      protected Map copyMap(Map map)
    • put

      public void put(String key, Object obj)
      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

      public void put(String key, boolean b)
      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

      public TemplateModel get(String key) throws TemplateModelException
      Description copied from interface: TemplateHashModel
      Gets a TemplateModel from the hash.
      Specified by:
      get in interface TemplateHashModel
      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

      public void remove(String key)
      Removes the given key from the underlying map.
      Parameters:
      key - the key to be removed
    • putAll

      public void putAll(Map m)
      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

      public Map toMap() throws TemplateModelException
      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

      public String toString()
      Convenience method for returning the String value of the underlying map.
      Overrides:
      toString in class Object
    • size

      public int size()
      Specified by:
      size in interface TemplateHashModelEx
      Returns:
      the number of key/value mappings in the hash.
    • isEmpty

      public boolean isEmpty()
      Specified by:
      isEmpty in interface TemplateHashModel
    • keys

      public TemplateCollectionModel keys()
      Specified by:
      keys in interface TemplateHashModelEx
      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

      public TemplateCollectionModel values()
      Specified by:
      values in interface TemplateHashModelEx
      Returns:
      a collection containing the values in the hash.
    • synchronizedWrapper

      public SimpleHash synchronizedWrapper()