Class EasyFactoryConfiguration

  • All Implemented Interfaces:
    java.lang.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