freemarker.template
Class SimpleSequence

java.lang.Object
  extended by freemarker.template.WrappingTemplateModel
      extended by freemarker.template.SimpleSequence
All Implemented Interfaces:
TemplateModel, TemplateSequenceModel, java.io.Serializable
Direct Known Subclasses:
SimpleList

public class SimpleSequence
extends WrappingTemplateModel
implements TemplateSequenceModel, java.io.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, Serialized Form

Field Summary
protected  java.util.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(java.util.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(java.util.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(int capacity)
          Constructs an empty simple sequence with preallocated capacity and using the default object wrapper set in WrappingTemplateModel.setDefaultObjectWrapper(ObjectWrapper).
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).
 
Method Summary
 void add(boolean b)
          Adds a boolean to the end of this SimpleSequence, by coercing the boolean into TemplateBooleanModel.TRUE or TemplateBooleanModel.FALSE.
 void add(java.lang.Object obj)
          Adds an arbitrary object to the end of this SimpleSequence.
 TemplateModel get(int i)
          Retrieves the i-th template model in this sequence.
 int size()
           
 SimpleSequence synchronizedWrapper()
           
 java.util.List toList()
          Note that this method creates and returns a deep-copy of the underlying list used internally.
 java.lang.String toString()
           
 
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, wait, wait, wait
 

Field Detail

list

protected final java.util.List list
Constructor Detail

SimpleSequence

public SimpleSequence()
Constructs an empty simple sequence that will use the the default object wrapper set in WrappingTemplateModel.setDefaultObjectWrapper(ObjectWrapper).


SimpleSequence

public SimpleSequence(int capacity)
Constructs an empty simple sequence with preallocated capacity and using the default object wrapper set in WrappingTemplateModel.setDefaultObjectWrapper(ObjectWrapper).


SimpleSequence

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

Parameters:
collection - the collection containing initial values. Note that a copy of the collection is made for internal use.

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).

Throws:
TemplateModelException

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(java.util.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.
Method Detail

add

public void add(java.lang.Object obj)
Adds an arbitrary object to the end of this SimpleSequence. If the object itself does not implement the TemplateModel interface, it will be wrapped into an appropriate adapter on the first call to get(int).

Parameters:
obj - the boolean to be added.

add

public void add(boolean b)
Adds a boolean to the end of this SimpleSequence, by coercing the boolean into TemplateBooleanModel.TRUE or TemplateBooleanModel.FALSE.

Parameters:
b - the boolean to be added.

toList

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

Throws:
TemplateModelException

get

public TemplateModel get(int i)
                  throws TemplateModelException
Description copied from interface: TemplateSequenceModel
Retrieves the i-th template model in this sequence.

Specified by:
get in interface TemplateSequenceModel
Returns:
the specified index in the list
Throws:
TemplateModelException

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.

toString

public java.lang.String toString()
Overrides:
toString in class java.lang.Object