freemarker.ext.misc
Class CollectionSize

java.lang.Object
  extended by freemarker.ext.misc.CollectionSize
All Implemented Interfaces:
TemplateMethodModel2, TemplateModel, java.io.Serializable

public final class CollectionSize
extends java.lang.Object
implements TemplateMethodModel2, java.io.Serializable

Determines the size of the underlying Collection or Map object given a TemplateObjectModel. Does this by calling the getAsObject method. If the object is of the expected type, the size is returned as a FastNumber. Otherwise, a TemplateModelException is thrown.

Usage:
From java:

 TemplateModelRoot root = new SimpleHash();

 root.put( "size", freemarker.ext.misc.CollectionSize.getInstance() );

 ...
 

From your FM-Classic template:

 <assign list1 = [ "test1", "test2", "test3" ]>
 <assign listSize = size( list1 )>
 <p>The size of list1 is: ${listSize}</p>

 ...
 

Note:
CollectionSize is a singleton instance. Use the getInstance() method to retrieve instances of this model.

Since:
1.8
Version:
$Id: CollectionSize.java 1101 2013-04-01 04:17:32Z run2000 $
Author:
Nicholas Cull
See Also:
Serialized Form

Method Summary
 TemplateModel exec(java.util.List<TemplateModel> arguments)
          Retrieves the size of the given Collection or Map.
static CollectionSize getInstance()
          Retrieve a singleton instance of this class.
 boolean isEmpty()
          Is the object empty?
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Method Detail

getInstance

public static CollectionSize getInstance()
Retrieve a singleton instance of this class. Since there is no state information held between calls, there is only a need for one instance.

Returns:
an instance of this CollectionSize class

isEmpty

public boolean isEmpty()
                throws TemplateModelException
Is the object empty?

Specified by:
isEmpty in interface TemplateModel
Returns:
false, since the method is never empty
Throws:
TemplateModelException

exec

public TemplateModel exec(java.util.List<TemplateModel> arguments)
                   throws TemplateModelException

Retrieves the size of the given Collection or Map. Performs an unwrapping by calling getAsObject, then calls the size method of the underlying object.

Specified by:
exec in interface TemplateMethodModel2
Parameters:
arguments - a List containing a TemplateObjectMode as its single item
Returns:
the size of the Collection or Map as a TemplateNumberModel
Throws:
TemplateModelException - the size could not be determined