Package groovy.util

# Interface Factory

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

public interface Factory

Author:
  Andres Almiray, Danno Ferrin

## Method Summary

Modifier and Type
Method
Description
`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 registeredName, String registeredGroupName)`
Called when a factory is registered 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 Details

### 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, String registeredName, 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

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 standard 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)