Class TemplateHandler

  extended by sunlabs.brazil.template.TemplateHandler (view source)
All Implemented Interfaces:

public class TemplateHandler
extends Object
implements Handler

The TemplateHandler reads a template file from the document root, based on the URL, and passes the content through one or more template filters.

The following configuration parameters are used to initialize this Handler:

prefix, suffix, glob, match
Specify the URL that triggers this handler. By default, all URL's are considered. Only documents that are mime sub-types of text are processed. See FileHandler for a description of how to set mime types for url suffixes. (See MatchString).
A list of template names. For each name in the list, the property name.class is examined to determine which class to use for each template. Then name is used as the prefix for other template specific properties if any. If name.class does not exist, then name is assumed to be the class name, and there are no template specific properties for the template. Methods in the template classes will be invoked to process the XML/HTML tags present in the content.
The name of the request property that the Session ID will be found in, used to identify the proper template instance. The default value is "SessionID". Typically, a sessionHandler, such as CookieSessionHandler is used upstream to create the sessionID. If no id is found, then the session named "common" is used instead. Exactly one instance of each template class is created for each session.
The default file in the directory to use as a template if a directory name is specified. Defaults to index[suffix], or "index.html" if no suffix is provided.
The character encoding to use to interpret the template. If no encoding is specified, the default encoding is used. The template is read from the filesystem, and converted into a String using this encoding. All template processing is done using the String representation.
The character encoding to use to interpret the template results. If no "outputEncoding" is specified, then "encoding" is used. Once template processing is complete, the results are converted into a byte stream for transmission to the client using the "outputEncoding", if specified. If not specified then the HTTP default (8-bit ASCII) encoding is used.
if present (e.g. set to any value) an HTTP last-modified header is added to the response with the current time.
debug if set to "true", template debugging is enabled: templates will emit their pre-processed markup as an HTML comment. This parameter only takes effect if the debug option is not specified for an individual template.
If specified, all tag names defined for each template class are prefixed with tagPrefix. This parameter only takes effect if the tagPrefix option is not specified for an individual template.

The request properties DirectoryName, fileName and lastModified may be set as a convenience for downstream handlers.

This handler duplicates some of the functionality of the template filter, so that it may be used by itself in simple configurations. As such, if issues re-directs if directories are given without a trailing "/", and uses an "index" file (see default above) if a directory name is specified.

To filter content other than from the file system, use the template filter instead.

Constructor Summary
Method Summary
 String getContent(Request request, File file, String encoding)
          get the content associated with this template.
 boolean init(Server server, String propsPrefix)
          Initializes the handler.
 boolean respond(Request request)
          Process an html template file, using the supplied template processing classes.
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Constructor Detail


public TemplateHandler()
Method Detail


public boolean init(Server server,
                    String propsPrefix)
Description copied from interface: Handler
Initializes the handler.

Specified by:
init in interface Handler
server - The HTTP server that created this Handler. Typical Handlers will use Server.props to obtain run-time configuration information.
propsPrefix - The handlers name. The string this Handler may prepend to all of the keys that it uses to extract configuration information from Server.props. This is set (by the Server and ChainHandler) to help avoid configuration parameter namespace collisions.
true if this Handler initialized successfully, false otherwise. If false is returned, this Handler should not be used.


public boolean respond(Request request)
                throws IOException
Process an html template file, using the supplied template processing classes.

Specified by:
respond in interface Handler
request - The Request object that represents the HTTP request.
true if the request was handled. A request was handled if a response was supplied to the client, typically by calling Request.sendResponse() or Request.sendError.
IOException - if there was an I/O error while sending the response to the client. Typically, in that case, the Server will (try to) send an error message to the client and then close the client's connection.

The IOException should not be used to silently ignore problems such as being unable to access some server-side resource (for example getting a FileNotFoundException due to not being able to open a file). In that case, the Handler's duty is to turn that IOException into a HTTP response indicating, in this case, that a file could not be found.


public String getContent(Request request,
                         File file,
                         String encoding)
                  throws IOException
get the content associated with this template. This version reads it from a file.

request - The standard request object
file - The file object to get the template from
The content of the template to be processed

Version Kenai-svn-r24, Generated 08/18/09
Copyright (c) 2001-2009, Sun Microsystems.