Package org.apache.velocity

# Class Template

java.lang.Object
org.apache.velocity.runtime.resource.Resource
org.apache.velocity.Template

All Implemented Interfaces:
  `Cloneable`

public class Template extends Resource implements Cloneable
This class is used for controlling all template operations. This class uses a parser created by JavaCC to create an AST that is subsequently traversed by a Visitor.

     // set up and initialize Velocity before this code block

     Template template = Velocity.getTemplate("test.wm");
     Context context = new VelocityContext();

     context.put("foo", "bar");
     context.put("customer", new Customer());

     template.merge(context, writer);

Version:
  $Id$
Author:
  Jason van Zyl, Geir Magnusson Jr.

## Field Summary

### Fields inherited from class org.apache.velocity.runtime.resource.Resource

`data, encoding, lastModified, log, MILLIS_PER_SECOND, modificationCheckInterval, name, nextCheck, resourceLoader, rsvc, type`

## Constructor Summary

Constructors
Constructor
Description
`Template()`
Default constructor

## Method Summary

Modifier and Type
Method
Description
`protected void`
`deepCloneData()`
Deep cloning of resource data
`Map<String,Object>`
`getMacros()`
get the map of all macros defined by this template
`void`
`initDocument()`
initializes the document.
`void`
`merge(Context context, Writer writer)`
The AST node structure is merged with the context to produce the final output.
`void`
`merge(Context context, Writer writer, List<String> macroLibraries)`
The AST node structure is merged with the context to produce the final output.
`boolean`
`process()`
gets the named resource as a stream, parses and inits

### Methods inherited from class org.apache.velocity.runtime.resource.Resource

`clone, getData, getEncoding, getLastModified, getName, getResourceLoader, getType, isSourceModified, requiresChecking, setData, setEncoding, setLastModified, setModificationCheckInterval, setName, setResourceLoader, setRuntimeServices, setType, touch`

### Methods inherited from class java.lang.Object

`equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## Constructor Details

### Template

public Template()
Default constructor

## Method Details

### getMacros

public Map<String,Object> getMacros()
get the map of all macros defined by this template

Returns:
  macros map

### process

public boolean process() throws ResourceNotFoundException, ParseErrorException
gets the named resource as a stream, parses and inits

Specified by:
  `process` in class `Resource`
Returns:
  true if successful
Throws:
  `ResourceNotFoundException` - if template not found from any available source.
  `ParseErrorException` - if template cannot be parsed due to syntax (or other) error.

### initDocument

public void initDocument() throws TemplateInitException
initializes the document. init() is not longer dependant upon context, but we need to let the init() carry the template name down through for VM namespace features

Throws:
  `TemplateInitException` - When a problem occurs during the document initialization.

### merge

public void merge(Context context, Writer writer) throws ResourceNotFoundException, ParseErrorException, MethodInvocationException
The AST node structure is merged with the context to produce the final output.

Parameters:
  `context` - Context with data elements accessed by template
  `writer` - output writer for rendered template
Throws:
  `ResourceNotFoundException` - if template not found from any available source.
  `ParseErrorException` - if template cannot be parsed due to syntax (or other) error.
  `MethodInvocationException` - When a method on a referenced object in the context could not invoked.

### merge

public void merge(Context context, Writer writer, List<String> macroLibraries) throws ResourceNotFoundException, ParseErrorException, MethodInvocationException
The AST node structure is merged with the context to produce the final output.

Parameters:
  `context` - Context with data elements accessed by template
  `writer` - output writer for rendered template
  `macroLibraries` - a list of template files containing macros to be used when merging
Throws:
  `ResourceNotFoundException` - if template not found from any available source.
  `ParseErrorException` - if template cannot be parsed due to syntax (or other) error.
  `MethodInvocationException` - When a method on a referenced object in the context could not invoked.
Since:
  1.6

### deepCloneData

protected void deepCloneData() throws CloneNotSupportedException
Description copied from class: `Resource`
Deep cloning of resource data

Overrides:
  `deepCloneData` in class `Resource`
Throws:
  `CloneNotSupportedException`