## groovy.util
Interface Factory

All Known Implementing Classes:
  AbstractFactory

    public interface Factory

Author:
  Andres Almiray <aalmiray@users.sourceforge.com>, Danno Ferrin

Method Summary
`boolean` `isHandlesNodeChildren()` Does this factory "Own" it's child closure.
`boolean` `isLeaf()`
`Object` `newInstance(FactoryBuilderSupport builder, Object name, Object value, Map attributes)`
`void` `onFactoryRegistration(FactoryBuilderSupport builder, String registerdName, String registeredGroupName)` Called when a factory is registerd to a builder
`boolean` `onHandleNodeAttributes(FactoryBuilderSupport builder, Object node, Map attributes)`
`boolean` `onNodeChildren(FactoryBuilderSupport builder, Object node, Closure childContent)` Only called if it isLeaf is false and isHandlesNodeChildren is true
`void` `onNodeCompleted(FactoryBuilderSupport builder, Object parent, Object node)`
`void` `setChild(FactoryBuilderSupport builder, Object parent, Object child)`
`void` `setParent(FactoryBuilderSupport builder, Object parent, Object child)`

Method Detail

### isLeaf

    boolean isLeaf()

  Returns:
    true if no child closures should be processed

### isHandlesNodeChildren

    boolean isHandlesNodeChildren()

  Does this factory "Own" it's child closure.

  Returns:
    true if the factory should have onContentClosure() called, false if the builder shouold handle it

### onFactoryRegistration

    void onFactoryRegistration(FactoryBuilderSupport builder,
                               String registerdName,
                               String registeredGroupName)

  Called when a factory is registerd to a builder

  Parameters:
    `builder` - the build the factory has been registered to
    `registerdName` - the name the factory has been registerd under

### newInstance

    Object newInstance(FactoryBuilderSupport builder,
                       Object name,
                       Object value,
                       Map attributes)
                       throws InstantiationException,
                              IllegalAccessException

  Parameters:
    `builder` - the FactoryBuilder
    `name` - the name of the node being built
    `value` - the 'value' argument in the build node
    `attributes` - the attributes of the build arg
  Returns:
    the object created for the builder
  Throws:
    `InstantiationException` - if attempting to instantiate an interface or abstract class
    `IllegalAccessException` - if the instance can't be created due to a security violation

### onHandleNodeAttributes

    boolean onHandleNodeAttributes(FactoryBuilderSupport builder,
                                   Object node,
                                   Map attributes)

  Parameters:
    `builder` - the FactoryBuilder
    `node` - the node (returned from newINstance) to consider the attributes for
    `attributes` - the attributes, a mutable set
  Returns:
    true if the factory builder should use standerd bean property matching for the remaining attributes

### onNodeChildren

    boolean onNodeChildren(FactoryBuilderSupport builder,
                           Object node,
                           Closure childContent)

  Only called if it isLeaf is false and isHandlesNodeChildren is true

  Parameters:
    `builder` - the FactoryBuilder
    `node` - the node (returned from newINstance) to consider the attributes for
    `childContent` - the child content closure of the builder
  Returns:
    true if the factory builder should apply default node processing to the content child

### onNodeCompleted

    void onNodeCompleted(FactoryBuilderSupport builder,
                         Object parent,
                         Object node)

  Parameters:
    `builder` - the FactoryBuilder
    `parent` - the parent node (null if 'root')
    `node` - the node just completed

### setParent

    void setParent(FactoryBuilderSupport builder,
                   Object parent,
                   Object child)

### setChild

    void setChild(FactoryBuilderSupport builder,
                  Object parent,
                  Object child)

Copyright © 2003-2009 The Codehaus. All rights reserved.