org.apache.velocity.tools.view
Class XMLToolboxManager

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

public abstract class XMLToolboxManager
extends java.lang.Object
implements ToolboxManager

A ToolboxManager for loading a toolbox from xml.

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 load(java.io.InputStream input) method. The required format is shown in the following example:

 
 <?xml version="1.0"?>
 
 <toolbox>
   <tool>
      <key>toolLoader</key>
      <class>org.apache.velocity.tools.tools.ToolLoader</class>
   </tool>
   <tool>
      <key>math</key>
      <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>    
 

Version:
$Id: XMLToolboxManager.java,v 1.3 2003/05/28 00:17:15 nbubna Exp $
Author:
Nathan Bubna, Geir Magnusson Jr.

Field Summary
static java.lang.String ATTRIBUTE_TYPE
           
static java.lang.String BASE_NODE
           
static java.lang.String ELEMENT_CLASS
           
static java.lang.String ELEMENT_DATA
           
static java.lang.String ELEMENT_KEY
           
static java.lang.String ELEMENT_TOOL
           
static java.lang.String ELEMENT_VALUE
           
private  java.util.List toolinfo
           
 
Constructor Summary
XMLToolboxManager()
          Default constructor
 
Method Summary
 void addTool(ToolInfo info)
          Adds a tool to be managed
 ToolboxContext getToolboxContext(java.lang.Object initData)
          Creates a ToolboxContext from the tools and data in this manager.
 void load(java.io.InputStream input)
          Reads an XML document from an InputStream using dom4j and sets up the toolbox from that.
protected  void log(java.lang.String s)
          Default implementation logs messages to Velocity's log system
protected  ToolInfo readDataInfo(org.dom4j.Element e)
           
protected  boolean readElement(org.dom4j.Element e)
          Delegates the reading of an element's ToolInfo and adds the returned instance to the tool list.
protected  ToolInfo readToolInfo(org.dom4j.Element e)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

BASE_NODE

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

ELEMENT_TOOL

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

ELEMENT_DATA

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

ELEMENT_KEY

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

ELEMENT_CLASS

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

ELEMENT_VALUE

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

ATTRIBUTE_TYPE

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

toolinfo

private java.util.List toolinfo
Constructor Detail

XMLToolboxManager

public XMLToolboxManager()
Default constructor

Method Detail

addTool

public void addTool(ToolInfo info)
Description copied from interface: ToolboxManager
Adds a tool to be managed

Specified by:
addTool in interface ToolboxManager

getToolboxContext

public ToolboxContext getToolboxContext(java.lang.Object initData)
Description copied from interface: ToolboxManager
Creates a ToolboxContext from the tools and data in this manager. Tools that implement the ViewTool interface should be initialized using the given initData.

Specified by:
getToolboxContext in interface ToolboxManager
Parameters:
initData - data used to initialize ViewTools
Returns:
the created ToolboxContext

log

protected void log(java.lang.String s)
Default implementation logs messages to Velocity's log system


load

public void load(java.io.InputStream input)
          throws java.lang.Exception

Reads an XML document from an InputStream using dom4j and sets up the toolbox from that.

The DTD for toolbox schema is:
  <?xml version="1.0"?>
  <!ELEMENT toolbox (tool*,data*)>
  <!ELEMENT tool    (key,class,#PCDATA)>
  <!ELEMENT data    (key,value)>
      <!ATTLIST data type (string|number|boolean) "string">
  <!ELEMENT key     (#CDATA)>
  <!ELEMENT class   (#CDATA)>
  <!ELEMENT value   (#CDATA)>
 

Parameters:
input - the InputStream to read from
java.lang.Exception

readElement

protected boolean readElement(org.dom4j.Element e)
                       throws java.lang.Exception
Delegates the reading of an element's ToolInfo and adds the returned instance to the tool list.

java.lang.Exception

readToolInfo

protected ToolInfo readToolInfo(org.dom4j.Element e)
                         throws java.lang.Exception
java.lang.Exception

readDataInfo

protected ToolInfo readDataInfo(org.dom4j.Element e)
                         throws java.lang.Exception
java.lang.Exception


Copyright (c) 2003 Apache Software Foundation