org.apache.velocity.tools.config

## Class EasyFactoryConfiguration

- java.lang.Object
- - org.apache.velocity.tools.config.Configuration
  - - org.apache.velocity.tools.config.CompoundConfiguration<ToolboxConfiguration>
    - - org.apache.velocity.tools.config.FactoryConfiguration
      - - org.apache.velocity.tools.config.EasyFactoryConfiguration

All Implemented Interfaces:
  Comparable<Configuration>

    public class EasyFactoryConfiguration
    extends FactoryConfiguration

`FactoryConfiguration` subclass that simplifies the process of configuring a `ToolboxFactory` in Java without the use of an xml or properties configuration file. Below is an example:

     EasyFactoryConfiguration config = new EasyFactoryConfiguration();
     config.toolbox(Scope.REQUEST).property("locale", Locale.US)
      .tool(DateTool.class)
      .tool("myTool", MyTool.class);
     config.toolbox(Scope.APPLICATION)
      .tool(NumberTool.class).property("locale", Locale.FR);
     ToolboxFactory factory = config.createFactory();

Doing the above without this class would require the following to create an equivalent `FactoryConfiguration` in Java:

     FactoryConfiguration factoryConfig = new FactoryConfiguration();
     ToolboxConfiguration toolbox = new ToolboxConfiguration();
     toolbox.setScope(Scope.REQUEST);
     toolbox.setProperty("locale", Locale.US);
     ToolConfiguration tool = new ToolConfiguration();
     tool.setClassname(DateTool.class.getName());
     tool = new ToolConfiguration();
     tool.setKey("myTool");
     tool.setClassname(MyTool.class.getName());
     toolbox.addTool(tool);
     toolbox = new ToolboxConfiguration();
     toolbox.setScope(Scope.APPLICATION);
     tool = new ToolConfiguration();
     tool.setClassname(NumberTool.class.getName());
     tool.setProperty("locale", Locale.FR);
     toolbox.addTool(tool);
     factoryConfig.addToolbox(toolbox);
     ToolboxFactory factory = factoryConfig.createFactory();

Of course, you could directly configure a `ToolboxFactory` with relatively little effort as well:

     ToolboxFactory factory = new ToolboxFactory();
     factory.putProperty(Scope.REQUEST, "locale", Locale.US);
     factory.addToolInfo(Scope.REQUEST, new ToolInfo("date", DateTool.class));
     factory.addToolInfo(Scope.REQUEST, new ToolInfo("render", ViewRenderTool.class));
     ToolInfo info = new ToolInfo("number", NumberTool.class);
     info.setProperty("locale", Locale.FR);
     factory.addToolInfo(Scope.APPLICATION, info);

But this is not reusable. Why does that matter? Well, it doesn't matter for application developers. But, if another framework wishes to provide a common VelocityTools configuration for application developers, this may come in handy. Or it may not. In any case, it was mildly fun to write. :)

Version:
  $Id: EasyFactoryConfiguration.java 511959 2007-02-26 19:24:39Z nbubna $
Author:
  Nathan Bubna

### Nested Class Summary

Nested Classes
`static class` `EasyFactoryConfiguration.EasyData`
`class` `EasyFactoryConfiguration.EasyWrap<C extends Configuration>`

### Constructor Summary

Constructors
Constructor and Description
`EasyFactoryConfiguration()`
`EasyFactoryConfiguration(boolean includeDefaults)`
`EasyFactoryConfiguration(boolean includeDefaults, String source)`

### Method Summary

All Methods Instance Methods Concrete Methods
`EasyFactoryConfiguration` `addDefaultTools()` Adds the `ConfigurationUtils.getDefaultTools()` configuration to this the current configuration.
`EasyFactoryConfiguration` `autoLoad()`
`EasyFactoryConfiguration` `autoLoad(boolean includeDefaults)`
`EasyFactoryConfiguration` `bool(String key, Object value)`
`protected EasyFactoryConfiguration` `data(String key, Data.Type type, Object value)`
`EasyFactoryConfiguration.EasyData` `data(String key, Object value)`
`EasyFactoryConfiguration` `data(String key, String type, Object value)`
`EasyFactoryConfiguration` `number(String key, Object value)`
`EasyFactoryConfiguration` `property(String name, Object value)`
`EasyFactoryConfiguration` `string(String key, Object value)`
`EasyFactoryConfiguration.EasyWrap<ToolConfiguration>` `tool(Class clazz)`
`EasyFactoryConfiguration.EasyWrap<ToolConfiguration>` `tool(String classname)`
`EasyFactoryConfiguration.EasyWrap<ToolConfiguration>` `tool(String key, Class clazz)`
`EasyFactoryConfiguration.EasyWrap<ToolConfiguration>` `tool(String key, String classname)`
`EasyFactoryConfiguration.EasyWrap<ToolboxConfiguration>` `toolbox(String scope)`

### Methods inherited from class org.apache.velocity.tools.config.FactoryConfiguration

`addConfiguration, addData, addSource, addToolbox, createFactory, equals, getData, getData, getData, getSource, getSources, getToolbox, getToolboxes, hasData, hashCode, removeData, removeToolbox, setData, setSource, setToolboxes, toString, toString, validate`

### Methods inherited from class org.apache.velocity.tools.config.CompoundConfiguration

`addChild, addConfiguration, appendChildren, getChild, getChildren, hasChildren, removeChild, setChildren`

### Methods inherited from class org.apache.velocity.tools.config.Configuration

`addConfiguration, addProperty, appendProperties, compareTo, getProperties, getProperty, getPropertyMap, hasProperties, removeProperty, removeProperty, setProperties, setProperty, setPropertyMap`

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

`clone, finalize, getClass, notify, notifyAll, wait, wait, wait`

### Constructor Detail

#### EasyFactoryConfiguration

    public EasyFactoryConfiguration()

#### EasyFactoryConfiguration

    public EasyFactoryConfiguration(boolean includeDefaults)

Parameters:
  `includeDefaults` - Sets whether this instance should start with the `ConfigurationUtils.getDefaultTools()` configuration or not.

#### EasyFactoryConfiguration

    public EasyFactoryConfiguration(boolean includeDefaults,
                                    String source)

Parameters:
  `includeDefaults` - Sets whether this instance should start with the `ConfigurationUtils.getDefaultTools()` configuration or not.
  `source` - a string identify where this instance was created, or something else useful to identify this instance during debugging

### Method Detail

#### addDefaultTools

    public EasyFactoryConfiguration addDefaultTools()

Adds the `ConfigurationUtils.getDefaultTools()` configuration to this the current configuration.

Returns:
  new EasyFacotryConfiguration instance with all default tools

#### autoLoad

    public EasyFactoryConfiguration autoLoad()

#### autoLoad

    public EasyFactoryConfiguration autoLoad(boolean includeDefaults)

#### data

    public EasyFactoryConfiguration.EasyData data(String key,
                                                  Object value)

#### data

    public EasyFactoryConfiguration data(String key,
                                         String type,
                                         Object value)

#### data

    protected EasyFactoryConfiguration data(String key,
                                            Data.Type type,
                                            Object value)

#### string

    public EasyFactoryConfiguration string(String key,
                                           Object value)

#### number

    public EasyFactoryConfiguration number(String key,
                                           Object value)

#### bool

    public EasyFactoryConfiguration bool(String key,
                                         Object value)

#### toolbox

    public EasyFactoryConfiguration.EasyWrap<ToolboxConfiguration> toolbox(String scope)

#### tool

    public EasyFactoryConfiguration.EasyWrap<ToolConfiguration> tool(String classname)

#### tool

    public EasyFactoryConfiguration.EasyWrap<ToolConfiguration> tool(Class clazz)

#### tool

    public EasyFactoryConfiguration.EasyWrap<ToolConfiguration> tool(String key,
                                                                     String classname)

#### tool

    public EasyFactoryConfiguration.EasyWrap<ToolConfiguration> tool(String key,
                                                                     Class clazz)

#### property

    public EasyFactoryConfiguration property(String name,
                                             Object value)