groovy.util

## Interface Factory

All Known Implementing Classes:
  AbstractFactory, CustomizersFactory, ImportCustomizerFactory, InlinedASTCustomizerFactory, SecureASTCustomizerFactory, SourceAwareCustomizerFactory

    public interface Factory

Author:
  Andres Almiray, Danno Ferrin

### Method Summary

All Methods Instance Methods Abstract Methods
`boolean` `isHandlesNodeChildren()` Does this factory "Own" it's child closure.
`boolean` `isLeaf()`
`java.lang.Object` `newInstance(FactoryBuilderSupport builder, java.lang.Object name, java.lang.Object value, java.util.Map attributes)`
`void` `onFactoryRegistration(FactoryBuilderSupport builder, java.lang.String registeredName, java.lang.String registeredGroupName)` Called when a factory is registered to a builder
`boolean` `onHandleNodeAttributes(FactoryBuilderSupport builder, java.lang.Object node, java.util.Map attributes)`
`boolean` `onNodeChildren(FactoryBuilderSupport builder, java.lang.Object node, Closure childContent)` Only called if it isLeaf is false and isHandlesNodeChildren is true
`void` `onNodeCompleted(FactoryBuilderSupport builder, java.lang.Object parent, java.lang.Object node)`
`void` `setChild(FactoryBuilderSupport builder, java.lang.Object parent, java.lang.Object child)`
`void` `setParent(FactoryBuilderSupport builder, java.lang.Object parent, java.lang.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 should handle it

#### onFactoryRegistration

    void onFactoryRegistration(FactoryBuilderSupport builder,
                               java.lang.String registeredName,
                               java.lang.String registeredGroupName)

Called when a factory is registered to a builder

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

#### newInstance

    java.lang.Object newInstance(FactoryBuilderSupport builder,
                                 java.lang.Object name,
                                 java.lang.Object value,
                                 java.util.Map attributes)
                          throws java.lang.InstantiationException,
                                 java.lang.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:
  `java.lang.InstantiationException` - if attempting to instantiate an interface or abstract class
  `java.lang.IllegalAccessException` - if the instance can't be created due to a security violation

#### onHandleNodeAttributes

    boolean onHandleNodeAttributes(FactoryBuilderSupport builder,
                                   java.lang.Object node,
                                   java.util.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 standard bean property matching for the remaining attributes

#### onNodeChildren

    boolean onNodeChildren(FactoryBuilderSupport builder,
                           java.lang.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,
                         java.lang.Object parent,
                         java.lang.Object node)

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

#### setParent

    void setParent(FactoryBuilderSupport builder,
                   java.lang.Object parent,
                   java.lang.Object child)

#### setChild

    void setChild(FactoryBuilderSupport builder,
                  java.lang.Object parent,
                  java.lang.Object child)