Package groovy.util

# Class AbstractFactory

java.lang.Object
groovy.util.AbstractFactory

All Implemented Interfaces:
  `Factory`

Direct Known Subclasses:
  `CustomizersFactory`, `ImportCustomizerFactory`, `InlinedASTCustomizerFactory`, `SecureASTCustomizerFactory`, `SourceAwareCustomizerFactory`

public abstract class AbstractFactory extends Object implements Factory

Author:
  Andres Almiray, Danno Ferrin

## Constructor Summary

Constructors
Constructor
Description
`AbstractFactory()`

## Method Summary

Modifier and Type
Method
Description
`boolean`
`isHandlesNodeChildren()`
Does this factory "Own" it's child closure.
`boolean`
`isLeaf()`
`void`
`onFactoryRegistration(FactoryBuilderSupport builder, String registeredName, String group)`
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)`

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

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Methods inherited from interface groovy.util.Factory

`newInstance`

## Constructor Details

### AbstractFactory

public AbstractFactory()

## Method Details

### isLeaf

public boolean isLeaf()

Specified by:
  `isLeaf` in interface `Factory`
Returns:
  true if no child closures should be processed

### isHandlesNodeChildren

public boolean isHandlesNodeChildren()
Description copied from interface: `Factory`
Does this factory "Own" it's child closure.

Specified by:
  `isHandlesNodeChildren` in interface `Factory`
Returns:
  true if the factory should have onContentClosure() called, false if the builder should handle it

### onFactoryRegistration

public void onFactoryRegistration(FactoryBuilderSupport builder, String registeredName, String group)
Description copied from interface: `Factory`
Called when a factory is registered to a builder

Specified by:
  `onFactoryRegistration` in interface `Factory`
Parameters:
  `builder` - the build the factory has been registered to
  `registeredName` - the name the factory has been registered under

### onHandleNodeAttributes

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

Specified by:
  `onHandleNodeAttributes` in interface `Factory`
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

public boolean onNodeChildren(FactoryBuilderSupport builder, Object node, Closure childContent)
Description copied from interface: `Factory`
Only called if it isLeaf is false and isHandlesNodeChildren is true

Specified by:
  `onNodeChildren` in interface `Factory`
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

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

Specified by:
  `onNodeCompleted` in interface `Factory`
Parameters:
  `builder` - the FactoryBuilder
  `parent` - the parent node (null if 'root')
  `node` - the node just completed

### setParent

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

Specified by:
  `setParent` in interface `Factory`

### setChild

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

Specified by:
  `setChild` in interface `Factory`