freemarker.template
Class SimpleCollection

java.lang.Object
  extended by freemarker.template.WrappingTemplateModel
      extended by freemarker.template.SimpleCollection
All Implemented Interfaces:
TemplateCollectionModel, TemplateModel, java.io.Serializable

public class SimpleCollection
extends WrappingTemplateModel
implements TemplateCollectionModel, java.io.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 (<forach>-ed) only once!

Consider using SimpleSequence instead of this class if you want to wrap Iterators. 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 Collections, 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.

Version:
$Id: SimpleCollection.java,v 1.13 2004/11/27 14:49:57 ddekany Exp $
See Also:
Serialized Form

Field Summary
 
Fields inherited from interface freemarker.template.TemplateModel
NOTHING
 
Constructor Summary
SimpleCollection(java.util.Collection collection)
           
SimpleCollection(java.util.Collection collection, ObjectWrapper wrapper)
           
SimpleCollection(java.util.Iterator iterator)
           
SimpleCollection(java.util.Iterator iterator, ObjectWrapper wrapper)
           
 
Method Summary
 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(java.util.Iterator iterator)

SimpleCollection

public SimpleCollection(java.util.Collection collection)

SimpleCollection

public SimpleCollection(java.util.Iterator iterator,
                        ObjectWrapper wrapper)

SimpleCollection

public SimpleCollection(java.util.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.

Specified by:
iterator in interface TemplateCollectionModel