org.apache.velocity.tools.view.servlet
Class ServletToolboxManager

java.lang.Object
  |
  +--org.apache.velocity.tools.view.XMLToolboxManager
        |
        +--org.apache.velocity.tools.view.servlet.ServletToolboxManager
All Implemented Interfaces:
ToolboxManager

public class ServletToolboxManager
extends XMLToolboxManager

A toolbox manager for the servlet environment.

A toolbox manager is responsible for automatically filling the Velocity context with a set of view tools. This class provides the following features:

Configuration

The toolbox manager is configured through an XML-based configuration file. The configuration file is passed to the XMLToolboxManager.load(java.io.InputStream input) method. The required format is shown in the following example:

 
 <?xml version="1.0"?>
 
 <toolbox>
   <tool>
      <key>toolLoader</key>
      <scope>application</scope>
      <class>org.apache.velocity.tools.tools.ToolLoader</class>
   </tool>
   <tool>
      <key>math</key>
      <scope>application</scope>
      <class>org.apache.velocity.tools.tools.MathTool</class>
   </tool>
   <data type="number">
      <key>luckynumber</key>
      <value>1.37</class>
   </data>
   <data type="string">
      <key>greeting</key>
      <value>Hello World!</class>
   </data>
 </toolbox>    
 

The recommended location for the configuration file is the WEB-INF directory of the web application.

Version:
$Id: ServletToolboxManager.java,v 1.4 2003/05/28 00:17:16 nbubna Exp $
Author:
Gabriel Sidler, Nathan Bubna, Geir Magnusson Jr.

Field Summary
private  java.util.Map appTools
           
private  boolean createSession
           
static java.lang.String ELEMENT_CREATE_SESSION
           
static java.lang.String ELEMENT_SCOPE
           
private static java.util.HashMap managersMap
           
private  java.util.ArrayList requestToolInfo
           
private  javax.servlet.ServletContext servletContext
           
static java.lang.String SESSION_TOOLS_KEY
           
private  java.util.ArrayList sessionToolInfo
           
static java.lang.String VALUE_NO
           
static java.lang.String VALUE_YES
           
 
Fields inherited from class org.apache.velocity.tools.view.XMLToolboxManager
ATTRIBUTE_TYPE, BASE_NODE, ELEMENT_CLASS, ELEMENT_DATA, ELEMENT_KEY, ELEMENT_TOOL, ELEMENT_VALUE
 
Constructor Summary
private ServletToolboxManager(javax.servlet.ServletContext servletContext)
          Use getInstance(ServletContext,String) instead to ensure there is exactly one ServletToolboxManager per xml toolbox configuration file.
 
Method Summary
 void addTool(ToolInfo info)
          Overrides XMLToolboxManager to separate tools by scope.
static ServletToolboxManager getInstance(javax.servlet.ServletContext servletContext, java.lang.String toolboxFile)
          ServletToolboxManager factory method.
 ToolboxContext getToolboxContext(java.lang.Object initData)
          Overrides XMLToolboxManager to handle the separate scopes.
protected  void log(java.lang.String s)
          Overrides XMLToolboxManager
protected  boolean readCreateSession(org.dom4j.Element e)
          Reads the value for create-session.
protected  boolean readElement(org.dom4j.Element e)
          Overrides XMLToolboxManager to handle the create-session element.
protected  ToolInfo readToolInfo(org.dom4j.Element e)
          Overrides XMLToolboxManager to read a ServletToolInfo instead of a ViewToolInfo.
 void setCreateSession(boolean b)
          Sets whether or not to create a new session when none exists for the current request and session-scoped tools have been defined for this toolbox.
 
Methods inherited from class org.apache.velocity.tools.view.XMLToolboxManager
load, readDataInfo
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

ELEMENT_SCOPE

public static final java.lang.String ELEMENT_SCOPE
See Also:
Constant Field Values

ELEMENT_CREATE_SESSION

public static final java.lang.String ELEMENT_CREATE_SESSION
See Also:
Constant Field Values

VALUE_YES

public static final java.lang.String VALUE_YES
See Also:
Constant Field Values

VALUE_NO

public static final java.lang.String VALUE_NO
See Also:
Constant Field Values

SESSION_TOOLS_KEY

public static final java.lang.String SESSION_TOOLS_KEY
See Also:
Constant Field Values

servletContext

private javax.servlet.ServletContext servletContext

appTools

private java.util.Map appTools

sessionToolInfo

private java.util.ArrayList sessionToolInfo

requestToolInfo

private java.util.ArrayList requestToolInfo

createSession

private boolean createSession

managersMap

private static java.util.HashMap managersMap
Constructor Detail

ServletToolboxManager

private ServletToolboxManager(javax.servlet.ServletContext servletContext)
Use getInstance(ServletContext,String) instead to ensure there is exactly one ServletToolboxManager per xml toolbox configuration file.

Method Detail

getInstance

public static ServletToolboxManager getInstance(javax.servlet.ServletContext servletContext,
                                                java.lang.String toolboxFile)
ServletToolboxManager factory method. This method will ensure there is exactly one ServletToolboxManager per xml toolbox configuration file.


setCreateSession

public void setCreateSession(boolean b)

Sets whether or not to create a new session when none exists for the current request and session-scoped tools have been defined for this toolbox.

If true, then a call to getToolboxContext(Object) will create a new session if none currently exists for this request and the toolbox has one or more session-scoped tools designed.

If false, then a call to getToolboxContext(Object) will never create a new session for the current request. This effectively means that no session-scoped tools will be added to the ToolboxContext for a request that does not have a session object.

The default value is true.


log

protected void log(java.lang.String s)
Overrides XMLToolboxManager

Overrides:
log in class XMLToolboxManager

readElement

protected boolean readElement(org.dom4j.Element e)
                       throws java.lang.Exception
Overrides XMLToolboxManager to handle the create-session element.

Overrides:
readElement in class XMLToolboxManager
java.lang.Exception

readCreateSession

protected boolean readCreateSession(org.dom4j.Element e)
                             throws java.lang.Exception
Reads the value for create-session.

java.lang.Exception
See Also:
setCreateSession(boolean)

readToolInfo

protected ToolInfo readToolInfo(org.dom4j.Element e)
                         throws java.lang.Exception
Overrides XMLToolboxManager to read a ServletToolInfo instead of a ViewToolInfo.

Overrides:
readToolInfo in class XMLToolboxManager
java.lang.Exception

addTool

public void addTool(ToolInfo info)
Overrides XMLToolboxManager to separate tools by scope. For this to work, we obviously override getToolboxContext(Object) as well.

Specified by:
addTool in interface ToolboxManager
Overrides:
addTool in class XMLToolboxManager

getToolboxContext

public ToolboxContext getToolboxContext(java.lang.Object initData)
Overrides XMLToolboxManager to handle the separate scopes. Application scope tools were initialized when the toolbox was loaded. Session scope tools are initialized once per session and stored in a map in the session attributes. Request scope tools are initialized on every request.

Specified by:
getToolboxContext in interface ToolboxManager
Overrides:
getToolboxContext in class XMLToolboxManager
Parameters:
initData - the ViewContext for the current servlet request
Returns:
the created ToolboxContext


Copyright (c) 2003 Apache Software Foundation