freemarker.template

Class SimpleSequence

Implemented Interfaces:
Serializable, TemplateModel, TemplateSequenceModel
Known Direct Subclasses:
SimpleList

public class SimpleSequence
extends WrappingTemplateModel
implements TemplateSequenceModel, Serializable

A convenient implementation of a list. This object implements TemplateSequenceModel, using an underlying java.util.List implementation.

A SimpleSequence can act as a cache for a TemplateCollectionModel, e.g. one that gets data from a database. When passed a TemplateCollectionModel as an argument to its constructor, the SimpleSequence immediately copies all the elements and discards the TemplateCollectionModel.

This class is thread-safe if you don't call the add method 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.

Version:
$Id: SimpleSequence.java,v 1.53 2005/06/21 18:17:54 ddekany Exp $
See Also:
SimpleHash, SimpleScalar

Field Summary

protected List
list

Fields inherited from interface freemarker.template.TemplateModel

NOTHING

Constructor Summary

SimpleSequence()
Constructs an empty simple sequence that will use the the default object wrapper set in WrappingTemplateModel.setDefaultObjectWrapper(ObjectWrapper).
SimpleSequence(Collection collection)
Constructs a simple sequence that will contain the elements from the specified Collection and will use the the default object wrapper set in WrappingTemplateModel.setDefaultObjectWrapper(ObjectWrapper).
SimpleSequence(Collection collection, ObjectWrapper wrapper)
Constructs a simple sequence that will contain the elements from the specified Collection and will use the specified object wrapper.
SimpleSequence(ObjectWrapper wrapper)
Constructs an empty simple sequence using the specified object wrapper.
SimpleSequence(TemplateCollectionModel tcm)
Constructs a simple sequence from the passed collection model using the default object wrapper set in WrappingTemplateModel.setDefaultObjectWrapper(ObjectWrapper).
SimpleSequence(int capacity)
Constructs an empty simple sequence with preallocated capacity and using the default object wrapper set in WrappingTemplateModel.setDefaultObjectWrapper(ObjectWrapper).

Method Summary

void
add(Object obj)
Adds an arbitrary object to the end of this SimpleSequence.
void
add(boolean b)
Adds a boolean to the end of this SimpleSequence, by coercing the boolean into TemplateBooleanModel.TRUE or TemplateBooleanModel.FALSE.
TemplateModel
get(int i)
int
size()
SimpleSequence
synchronizedWrapper()
List
toList()
Note that this method creates and returns a deep-copy of the underlying list used internally.
String
toString()

Methods inherited from class freemarker.template.WrappingTemplateModel

getDefaultObjectWrapper, getObjectWrapper, setDefaultObjectWrapper, setObjectWrapper, wrap

Field Details

list

protected final List list

Constructor Details

SimpleSequence

public SimpleSequence()

SimpleSequence

public SimpleSequence(Collection collection)
Parameters:
collection - the collection containing initial values. Note that a copy of the collection is made for internal use.

SimpleSequence

public SimpleSequence(Collection collection,
                      ObjectWrapper wrapper)
Constructs a simple sequence that will contain the elements from the specified Collection and will use the specified object wrapper.
Parameters:
collection - the collection containing initial values. Note that a copy of the collection is made for internal use.
wrapper - The object wrapper to use to wrap objects into TemplateModel instances. If null, the default wrapper set in WrappingTemplateModel.setDefaultObjectWrapper(ObjectWrapper) is used.

SimpleSequence

public SimpleSequence(ObjectWrapper wrapper)
Constructs an empty simple sequence using the specified object wrapper.
Parameters:
wrapper - The object wrapper to use to wrap objects into TemplateModel instances. If null, the default wrapper set in WrappingTemplateModel.setDefaultObjectWrapper(ObjectWrapper) is used.

SimpleSequence

public SimpleSequence(TemplateCollectionModel tcm)
            throws TemplateModelException
Constructs a simple sequence from the passed collection model using the default object wrapper set in WrappingTemplateModel.setDefaultObjectWrapper(ObjectWrapper).

SimpleSequence

public SimpleSequence(int capacity)

Method Details

add

public void add(Object obj)
Parameters:
obj - the boolean to be added.

add

public void add(boolean b)
Parameters:
b - the boolean to be added.

get

public TemplateModel get(int i)
            throws TemplateModelException
Specified by:
get in interface TemplateSequenceModel
Returns:
the specified index in the list

size

public int size()
Specified by:
size in interface TemplateSequenceModel
Returns:
the number of items in the list.

synchronizedWrapper

public SimpleSequence synchronizedWrapper()
Returns:
a synchronized wrapper for list.

toList

public List toList()
            throws TemplateModelException
Note that this method creates and returns a deep-copy of the underlying list 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.

toString

public String toString()