Objects that implement this interface can be used as user-defined directives (much like macros); you should rather use the newer {@link TemplateDirectiveModel}instead. Altough implementing output filters is more handy with this interface, this interface will be certainly deprecated as superfluous, starting from FreeMarker 2.4. But as far as the template engine is concerned, you can use both equivalently as a user-defined directive.
Note that, as of FreeMarker 2.1, TemplateTransformModel has changed. This is a more powerful implementation. There is a quick-and-dirty way to patch any legacy TemplateTransformModel so that it implements the new API. You simply add the following as your implementation of the getWriter() call:
public Writer getWriter(final Writer out, Map args) { final StringBuffer buf = new StringBuffer(); return new Writer() { public void write(char cbuf[], int off, int len) { buf.append(cbuf, off, len); } public void flush() throws IOException { out.flush(); } public void close() throws IOException { StringReader sr = new StringReader(buf.toString()); StringWriter sw = new StringWriter(); transform(sr, sw); out.write(sw.toString()); } }; }
@author Attila Szegedi
@version $Id: TemplateTransformModel.java,v 1.36 2003/04/11 20:57:32 revusky Exp $