# Package freemarker.template

The fundamental, most commonly used API-s of FreeMarker; start with `Configuration` (see also the Getting Stared in the Manual.)

See: Description

Interface Summary
AdapterTemplateModel: A `TemplateModel` that can be unwrapped and then it considers a provided desired (hint) class.
ObjectWrapper: Maps Java objects to the type-system of FreeMarker Template Language (see the `TemplateModel` interfaces).
ObjectWrapperAndUnwrapper: Experimental - subject to change: Adds functionality to `ObjectWrapper` that creates a plain Java object from a `TemplateModel`.
TemplateBooleanModel: "boolean" template language data type; same as in Java; either `true` or `false`.
TemplateCollectionModel: "collection" template language data type: a collection of values that can be enumerated, but can't be or not meant to be accessed by index or key.
TemplateCollectionModelEx: Experimental - subject to change: "extended collection" template language data type: Adds size/emptiness querybility and "contains" test to `TemplateCollectionModel`.
TemplateDateModel: "date", "time" and "date-time" template language data types: corresponds to `Date`.
TemplateDirectiveBody: Represents the nested content of a directive (`TemplateDirectiveModel`) invocation.
TemplateDirectiveModel: "directive" template language data type: used as user-defined directives (much like macros) in templates.
TemplateExceptionHandler: Used for the `template_exception_handler` configuration setting; see `Configurable.setTemplateExceptionHandler(TemplateExceptionHandler)` for more.
TemplateHashModel: "hash" template language data type: an object that contains other objects accessible through string keys (sub-variable names).
TemplateHashModelEx: "extended hash" template language data type; extends `TemplateHashModel` by allowing iterating through its keys and values.
TemplateHashModelEx2: Adds key-value pair listing capability to `TemplateHashModelEx`.
TemplateHashModelEx2.KeyValuePair: A key-value pair in a hash; used for `TemplateHashModelEx2.KeyValuePairIterator`.
TemplateHashModelEx2.KeyValuePairIterator: Iterates over the key-value pairs in a hash.
TemplateMethodModel: Deprecated Use `TemplateMethodModelEx` instead.
TemplateMethodModelEx: "extended method" template language data type: Objects that act like functions.
TemplateModel: The common super-interface of the interfaces that stand for the FreeMarker Template Language (FTL) data types.
TemplateModelAdapter: Implemented by classes that serve as adapters for template model objects in some other object model.
TemplateModelIterator: Used to iterate over a set of template models once; usually returned from `TemplateCollectionModel.iterator()`.
TemplateModelWithAPISupport: Experimental - subject to change: A `TemplateModel` on which the `?api` operation can be applied.
TemplateNodeModel: "node" template language data type: an object that is a node in a tree.
TemplateNumberModel: "number" template language data type; an object that stores a number.
TemplateScalarModel: "string" template language data-type; like in Java, an unmodifiable UNICODE character sequence.
TemplateSequenceModel: "sequence" template language data type; an object that contains other objects accessible through an integer 0-based index.
TemplateTransformModel: "transform" template language data type: user-defined directives (much like macros) specialized on filtering output; you should rather use the newer `TemplateDirectiveModel` instead.
TransformControl: An interface that can be implemented by writers returned from `TemplateTransformModel.getWriter(java.io.Writer, java.util.Map)`.

Class Summary
Configuration: The main entry point into the FreeMarker API; encapsulates the configuration settings of FreeMarker, also serves as a central template-loading and caching service.
DefaultArrayAdapter: Adapts an `array` of a non-primitive elements to the corresponding `TemplateModel` interface(s), most importantly to `TemplateHashModelEx`.
DefaultIterableAdapter: Adapts an `Iterable` to the corresponding `TemplateModel` interface(s), most importantly to `TemplateCollectionModel`.
DefaultIteratorAdapter: Adapts an `Iterator` to the corresponding `TemplateModel` interface(s), most importantly to `TemplateCollectionModel`.
DefaultListAdapter: Adapts a `List` to the corresponding `TemplateModel` interface(s), most importantly to `TemplateSequenceModel`.
DefaultMapAdapter: Adapts a `Map` to the corresponding `TemplateModel` interface(s), most importantly to `TemplateHashModelEx`.
DefaultNonListCollectionAdapter: Experimental - subject to change: Adapts a non-`List` Java `Collection` to the corresponding `TemplateModel` interface(s), most importantly to `TemplateCollectionModelEx`.
DefaultObjectWrapper: The default implementation of the `ObjectWrapper` interface.
DefaultObjectWrapperBuilder: Gets/creates a `DefaultObjectWrapper` singleton instance that's already configured as specified in the properties of this object; this is recommended over using the `DefaultObjectWrapper` constructors.
DefaultObjectWrapperConfiguration: Holds `DefaultObjectWrapper` configuration settings and defines their defaults.
LocalizedString: An abstract base class for scalars that vary by locale.
MapKeyValuePairIterator: Implementation of `TemplateHashModelEx2.KeyValuePairIterator` for a `TemplateHashModelEx2` that wraps or otherwise uses a `Map` internally.
ResourceBundleLocalizedString: A concrete implementation of `LocalizedString` that gets a localized string from a `ResourceBundle`
SimpleCollection: A simple implementation of `TemplateCollectionModel`.
SimpleDate: A simple implementation of the `TemplateDateModel` interface.
SimpleHash: A simple implementation of the `TemplateHashModelEx` interface, using its own underlying `Map` or `SortedMap` for storing the hash entries.
SimpleList: Deprecated Use SimpleSequence instead.
SimpleNumber: A simple implementation of the `TemplateNumberModel` interface.
SimpleObjectWrapper: A restricted object wrapper that will not expose arbitrary object, just those that directly correspond to the `TemplateModel` sub-interfaces (`String`, `Map` and such).
SimpleScalar: A simple implementation of the `TemplateScalarModel` interface, using a `String`.
SimpleSequence: A simple implementation of the `TemplateSequenceModel` interface, using its own underlying `List` for storing the list items.
Template: Stores an already parsed template, ready to be processed (rendered) for unlimited times, possibly from multiple threads.
TemplateModelListSequence: A sequence that wraps a `List` of `TemplateModel`-s.
Version: Represents a version number plus the further qualifiers and build info.
WrappingTemplateModel: Convenience base-class for containers that wrap their contained arbitrary Java objects into `TemplateModel` instances.

Exception Summary
MalformedTemplateNameException: Indicates that the template name given was malformed according the `TemplateNameFormat` in use.
Template.WrongEncodingException: Thrown by the `Template` constructors that specify a non-`null` encoding whoch doesn't match the encoding specified in the `#ftl` header of the template.
TemplateException: Runtime exception in a template (as opposed to a parsing-time exception: `ParseException`).
TemplateModelException: `TemplateModel` methods throw this exception if the requested data can't be retrieved.
TemplateNotFoundException: Thrown when `Configuration.getTemplate(String)` (or similar) doesn't find a template.

## Package freemarker.template Description

The fundamental, most commonly used API-s of FreeMarker; start with `Configuration` (see also the Getting Stared in the Manual.)