SimpleCollection (FreeMarker 2.3.23 API)
Date: 2015-07-05

freemarker.template

## Class SimpleCollection

- java.lang.Object
- - freemarker.template.WrappingTemplateModel
  - - freemarker.template.SimpleCollection

- All Implemented Interfaces:
    TemplateCollectionModel, TemplateModel, Serializable

      public class SimpleCollection
      extends WrappingTemplateModel
      implements TemplateCollectionModel, Serializable

  A simple implementation of `TemplateCollectionModel`. It's able to wrap `java.util.Iterator`-s and `java.util.Collection`-s. If you wrap an `Iterator`, the variable can be <#list>-ed only once!

  Consider using `SimpleSequence` instead of this class if you want to wrap `Iterator`s. `SimpleSequence` will read all elements of the `Iterator`, and store them in a `List` (this may cause too high resource consumption in some applications), so you can list the variable for unlimited times. Also, if you want to wrap `Collection`s, and then list the resulting variable for many times, `SimpleSequence` may gives better performance, as the wrapping of non-`TemplateModel` objects happens only once.

  This class is thread-safe. The returned `TemplateModelIterator`-s are not thread-safe.

  See Also:
    Serialized Form

- - ### Field Summary

    - ### Fields inherited from interface freemarker.template.TemplateModel

      `NOTHING`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `SimpleCollection(Collection collection)` Deprecated. Use `SimpleCollection(Collection, ObjectWrapper)`
    `SimpleCollection(Collection collection, ObjectWrapper wrapper)`
    `SimpleCollection(Iterator iterator)` Deprecated. Use `SimpleCollection(Iterator, ObjectWrapper)`
    `SimpleCollection(Iterator iterator, ObjectWrapper wrapper)`

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `TemplateModelIterator` | `iterator()` Retrieves a template model iterator that is used to iterate over the elements in this collection.

    - ### Methods inherited from class freemarker.template.WrappingTemplateModel

      `getDefaultObjectWrapper, getObjectWrapper, setDefaultObjectWrapper, setObjectWrapper, wrap`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### SimpleCollection

          public SimpleCollection(Iterator iterator)

      Deprecated. Use `SimpleCollection(Iterator, ObjectWrapper)`

    - #### SimpleCollection

          public SimpleCollection(Collection collection)

      Deprecated. Use `SimpleCollection(Collection, ObjectWrapper)`

    - #### SimpleCollection

          public SimpleCollection(Iterator iterator,
                                  ObjectWrapper wrapper)

    - #### SimpleCollection

          public SimpleCollection(Collection collection,
                                  ObjectWrapper wrapper)

  - ### Method Detail

    - #### iterator

          public TemplateModelIterator iterator()

      Retrieves a template model iterator that is used to iterate over the elements in this collection.

      When you wrap an `Iterator` and you get `TemplateModelIterator` for multiple times, only on of the returned `TemplateModelIterator` instances can be really used. When you have called a method of a `TemplateModelIterator` instance, all other instance will throw a `TemplateModelException` when you try to call their methods, since the wrapped `Iterator` can't return the first element anymore.

      Specified by:
        `iterator` in interface `TemplateCollectionModel`