org.apache.velocity.tools

## Class ToolInfo

- java.lang.Object
- - org.apache.velocity.tools.ToolInfo

All Implemented Interfaces:
  Serializable

    public class ToolInfo
    extends Object
    implements Serializable

Manages data needed to create instances of a tool. New instances are returned for every call to create(obj).

Version:
  $Id: ToolInfo.java 511959 2007-02-26 19:24:39Z nbubna $
Author:
  Nathan Bubna, Henning P. Schmiedehausen
See Also:
  Serialized Form

### Field Summary

Fields
`static String` `CONFIGURE_METHOD_NAME`

### Constructor Summary

Constructors
Constructor and Description
`ToolInfo(String key, Class clazz)` Creates a new instance using the minimum required info necessary for a tool.
`ToolInfo(String key, Class clazz, Class factory)` Creates a new instance using the minimum required info necessary for a tool.

### Method Summary

All Methods Instance Methods Concrete Methods
`void` `addProperties(Map<String,Object> parentProps)` Adds a map of properties from a parent scope to the properties for this tool.
`protected Map<String,Object>` `combine(Map<String,Object>... maps)` Combine several property maps
`protected void` `configure(Object tool, Map<String,Object> configuration)` Actually performs configuration of the newly instantiated tool using the combined final set of configuration properties.
`Object` `create(Map<String,Object> dynamicProperties)` Returns a new instance of the tool.
`String` `getClassname()` Get tool class name
`protected Method` `getConfigure()` Try to find a `configure()` method.
`Class` `getFactory()` Get factory class
`String` `getKey()` Get tool key
`Map<String,Object>` `getProperties()` Get tool properties
`protected Map<String,Object>` `getProps()` Get tools property (synchronized version)
`Class` `getToolClass()` Get tool class
`boolean` `hasConfigure()` Get whether this tool has a `configure()` method
`boolean` `hasPermission(String path)`
`protected void` `invoke(Method method, Object tool, Object param)` Invoke a single argument method on a tool
`boolean` `isSkipSetters()` Get whether setters are to be skipped
`protected Object` `newInstance()` Creates a new instance for this tool.
`Object` `putProperty(String name, Object value)` Puts a new property for this tool.
`void` `restrictTo(String path)`
`void` `setClass(Class clazz)` Set the tool class
`void` `setFactory(Class factory)` Set the factory class used to create tool instances.
`void` `setKey(String key)` Set the tool key
`protected void` `setProperty(Object tool, String name, Object value)` Set a property on a tool instance
`void` `setSkipSetters(boolean cfgOnly)` Set whether or not to skip setters.

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

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

### Field Detail

#### CONFIGURE_METHOD_NAME

    public static final String CONFIGURE_METHOD_NAME

See Also:
  Constant Field Values

### Constructor Detail

#### ToolInfo

    public ToolInfo(String key,
                    Class clazz)

Creates a new instance using the minimum required info necessary for a tool.

Parameters:
  `key` - tool key
  `clazz` - tool class

#### ToolInfo

    public ToolInfo(String key,
                    Class clazz,
                    Class factory)

Creates a new instance using the minimum required info necessary for a tool.

Parameters:
  `key` - tool key
  `clazz` - tool class

### Method Detail

#### setKey

    public void setKey(String key)

Set the tool key

Parameters:
  `key` - tool key

#### setClass

    public void setClass(Class clazz)

Set the tool class

Parameters:
  `clazz` - the java.lang.Class of the tool

#### setFactory

    public void setFactory(Class factory)

Set the factory class used to create tool instances.

The factory is supposed to have one of those three methods:

- createToolClassName()
- newToolClassName()
- getToolClassName()

where ToolClassName is the tool's class name.

If this method takes one `java.util.Map` argument, it will be given the tool's configuration map.

Parameters:
  `factory` - factory class

#### restrictTo

    public void restrictTo(String path)

Parameters:
  `path` - the full or partial request path restriction of the tool

#### setSkipSetters

    public void setSkipSetters(boolean cfgOnly)

Set whether or not to skip setters.

Parameters:
  `cfgOnly` - flag value

#### addProperties

    public void addProperties(Map<String,Object> parentProps)

Adds a map of properties from a parent scope to the properties for this tool. Only new properties will be added; any that are already set for this tool will be ignored.

Parameters:
  `parentProps` - parent properties map

#### putProperty

    public Object putProperty(String name,
                              Object value)

Puts a new property for this tool.

Parameters:
  `name` - property name
  `value` - property value
Returns:
  previous property value

#### getProps

    protected Map<String,Object> getProps()

Get tools property (synchronized version)

Returns:
  tools property

#### getKey

    public String getKey()

Get tool key

Returns:
  tool key

#### getClassname

    public String getClassname()

Get tool class name

Returns:
  tool class name

#### getToolClass

    public Class getToolClass()

Get tool class

Returns:
  tool class

#### getFactory

    public Class getFactory()

Get factory class

Returns:
  factory class or null if not provided

#### getProperties

    public Map<String,Object> getProperties()

Get tool properties

Returns:
  tools properties

#### hasConfigure

    public boolean hasConfigure()

Get whether this tool has a `configure()` method

Returns:
  `true` if the tool has a `configure()` method, `false` otherwise

#### isSkipSetters

    public boolean isSkipSetters()

Get whether setters are to be skipped

Returns:
  whether to skip setters

#### hasPermission

    public boolean hasPermission(String path)

Parameters:
  `path` - the path of a template requesting this tool
Returns:
  `true` if the specified request path matches the restrictions of this tool. If there is no request path restriction for this tool, it will always return `true`.

#### create

    public Object create(Map<String,Object> dynamicProperties)

Returns a new instance of the tool. If the tool has an configure(Map) method, the new instance will be initialized using the given properties combined with whatever "constant" properties have been put into this ToolInfo.

Parameters:
  `dynamicProperties` - map of dynamic properties
Returns:
  newly created and configured object

#### configure

    protected void configure(Object tool,
                             Map<String,Object> configuration)

Actually performs configuration of the newly instantiated tool using the combined final set of configuration properties. First, if the class lacks the `SkipSetters` annotation, then any specific setters matching the configuration keys are called, then the general configure(Map) method (if any) is called.

Parameters:
  `tool` - newly created tool to be configured
  `configuration` - properties

#### getConfigure

    protected Method getConfigure()

Try to find a `configure()` method.

Returns:
  `configure()` method if found, `null`otherwise.

#### newInstance

    protected Object newInstance()

Creates a new instance for this tool.

Returns:
  newly created tool
Throws:
  `IllegalStateException` - if creation failed

#### invoke

    protected void invoke(Method method,
                          Object tool,
                          Object param)

Invoke a single argument method on a tool

Parameters:
  `method` - the method to invoke
  `tool` - the tool on which to invoke the method
  `param` - the method argument
Throws:
  `IllegalStateException` - if invocation failed

#### setProperty

    protected void setProperty(Object tool,
                               String name,
                               Object value)
                        throws Exception

Set a property on a tool instance

Parameters:
  `tool` - tool instance
  `name` - property name
  `value` - property value
Throws:
  `Exception` - if setting the property throwed

#### combine

    protected Map<String,Object> combine(Map<String,Object>... maps)

Combine several property maps

Parameters:
  `maps` - maps to combine
Returns:
  combined map