Package groovy.util

# Class ObjectGraphBuilder

java.lang.Object
groovy.lang.GroovyObjectSupport
groovy.lang.Binding
groovy.util.FactoryBuilderSupport
groovy.util.ObjectGraphBuilder

All Implemented Interfaces:
  `GroovyObject`

public class ObjectGraphBuilder extends FactoryBuilderSupport
A builder for creating object graphs.
Each node defines the class to be created and the property on its parent (if any) at the same time.

- ## Nested Class Summary

  Nested Classes
  Modifier and Type
  Class
  Description
  `static interface`
  `ObjectGraphBuilder.ChildPropertySetter`
  Strategy for setting a child node on its parent.
  Useful for handling Lists/Arrays vs normal properties.
  `static interface`
  `ObjectGraphBuilder.ClassNameResolver`
  Strategy for resolving a classname.
  `static class`
  `ObjectGraphBuilder.DefaultChildPropertySetter`
  Default impl that calls parent.propertyName = child
  If parent.propertyName is a Collection it will try to add child to the collection.
  `static class`
  `ObjectGraphBuilder.DefaultClassNameResolver`
  Default impl that capitalizes the classname.
  `static class`
  `ObjectGraphBuilder.DefaultIdentifierResolver`
  Default impl, always returns 'id'
  `static class`
  `ObjectGraphBuilder.DefaultNewInstanceResolver`
  Default impl that calls Class.newInstance()
  `static class`
  `ObjectGraphBuilder.DefaultReferenceResolver`
  Default impl, always returns 'refId'
  `static class`
  `ObjectGraphBuilder.DefaultRelationNameResolver`
  Default impl that returns parentName and childName accordingly.
  `static interface`
  `ObjectGraphBuilder.IdentifierResolver`
  Strategy for picking the correct synthetic identifier.
  `static interface`
  `ObjectGraphBuilder.NewInstanceResolver`
  Strategy for creating new instances of a class.
  Useful for plug-in calls to non-default constructors.
  `static interface`
  `ObjectGraphBuilder.ReferenceResolver`
  Strategy for picking the correct synthetic reference identifier.
  `class`
  `ObjectGraphBuilder.ReflectionClassNameResolver`
  Build objects using reflection to resolve class names.
  `static interface`
  `ObjectGraphBuilder.RelationNameResolver`
  Strategy for resolving a relationship property name.

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `static final String`
  `CLASSNAME_RESOLVER_KEY`
  Option key selecting a class-name resolver strategy.
  `static final String`
  `CLASSNAME_RESOLVER_REFLECTION`
  Resolver option that uses reflection against the graph model.
  `static final String`
  `CLASSNAME_RESOLVER_REFLECTION_ROOT`
  Resolver option holding the root package for reflection lookup.
  `static final String`
  `LAZY_REF`
  Context key indicating that a reference should be resolved lazily.
  `static final String`
  `NODE_CLASS`
  Context key for the resolved node class.
  `static final String`
  `NODE_NAME`
  Context key for the resolved node name.
  `static final String`
  `OBJECT_ID`
  Context key for a synthetic object identifier.

  ### Fields inherited from class groovy.util.FactoryBuilderSupport

  `attributeDelegates, autoRegistrationComplete, autoRegistrationRunning, CHILD_BUILDER, CURRENT_BUILDER, CURRENT_FACTORY, CURRENT_NAME, CURRENT_NODE, explicitMethods, explicitProperties, methodMissingDelegate, OWNER, PARENT_BUILDER, PARENT_CONTEXT, PARENT_FACTORY, PARENT_NAME, PARENT_NODE, postInstantiateDelegates, postNodeCompletionDelegates, preInstantiateDelegates, propertyMissingDelegate, registrationGroup, registrationGroupName, SCRIPT_CLASS_NAME`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `ObjectGraphBuilder()`
  Creates an object graph builder with default resolver strategies.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `String`
  `getBeanFactoryName()`
  Returns the current name of the 'bean' node.
  `ObjectGraphBuilder.ChildPropertySetter`
  `getChildPropertySetter()`
  Returns the current ChildPropertySetter.
  `ClassLoader`
  `getClassLoader()`
  Returns the classLoader used to load a node's class.
  `ObjectGraphBuilder.ClassNameResolver`
  `getClassNameResolver()`
  Returns the current ClassNameResolver.
  `ObjectGraphBuilder.NewInstanceResolver`
  `getNewInstanceResolver()`
  Returns the current NewInstanceResolver.
  `ObjectGraphBuilder.RelationNameResolver`
  `getRelationNameResolver()`
  Returns the current RelationNameResolver.
  `boolean`
  `isLazyReferencesAllowed()`
  Returns true if references can be resolved lazily
  `protected void`
  `postInstantiate(Object name, Map attributes, Object node)`
  A hook after the factory creates the node and before attributes are set.
  It will call any registered postInstantiateDelegates, if you override this method be sure to call this impl somewhere in your code.
  `protected void`
  `preInstantiate(Object name, Map attributes, Object value)`
  A hook before the factory creates the node.
  It will call any registered preInstantiateDelegates, if you override this method be sure to call this impl somewhere in your code.
  `protected Factory`
  `resolveFactory(Object name, Map attributes, Object value)`
  This is a hook for subclasses to plug in a custom strategy for mapping names to factories.
  `void`
  `setBeanFactoryName(String beanFactoryName)`
  Sets the name for the 'bean' node.
  `void`
  `setChildPropertySetter(Object childPropertySetter)`
  Sets the current ChildPropertySetter.
  It will assign DefaultChildPropertySetter if null.
  It accepts a ChildPropertySetter instance or a Closure.
  `void`
  `setClassLoader(ClassLoader classLoader)`
  Sets the classLoader used to load a node's class.
  `void`
  `setClassNameResolver(Object classNameResolver)`
  Sets the current ClassNameResolver.
  It will assign DefaultClassNameResolver if null.
  It accepts a ClassNameResolver instance, a String, a Closure or a Map.
  `void`
  `setIdentifierResolver(Object identifierResolver)`
  Sets the current IdentifierResolver.
  It will assign DefaultIdentifierResolver if null.
  It accepts a IdentifierResolver instance, a String or a Closure.
  `void`
  `setLazyReferencesAllowed(boolean lazyReferencesAllowed)`
  Sets whether references can be resolved lazily or not.
  `void`
  `setNewInstanceResolver(Object newInstanceResolver)`
  Sets the current NewInstanceResolver.
  It will assign DefaultNewInstanceResolver if null.
  It accepts a NewInstanceResolver instance or a Closure.
  `void`
  `setReferenceResolver(Object referenceResolver)`
  Sets the current ReferenceResolver.
  It will assign DefaultReferenceResolver if null.
  It accepts a ReferenceResolver instance, a String or a Closure.
  `void`
  `setRelationNameResolver(ObjectGraphBuilder.RelationNameResolver relationNameResolver)`
  Sets the current RelationNameResolver.
  It will assign DefaultRelationNameResolver if null.

  ### Methods inherited from class groovy.util.FactoryBuilderSupport

  `addAttributeDelegate, addDisposalClosure, addPostInstantiateDelegate, addPostNodeCompletionDelegate, addPreInstantiateDelegate, autoRegisterNodes, build, build, build, checkExplicitMethod, checkValueIsNull, checkValueIsType, checkValueIsTypeNotString, createNode, dispatchNodeCall, dispathNodeCall, dispose, getAttributeDelegates, getChildBuilder, getContext, getContextAttribute, getContexts, getContinuationData, getCurrent, getCurrentBuilder, getCurrentFactory, getCurrentName, getDisposalClosures, getExplicitMethods, getExplicitProperties, getFactories, getLocalExplicitMethods, getLocalExplicitProperties, getLocalFactories, getMethodMissingDelegate, getName, getNameMappingClosure, getParentContext, getParentFactory, getParentName, getParentNode, getPostInstantiateDelegates, getPostNodeCompletionDelegates, getPreInstantiateDelegates, getProperty, getPropertyMissingDelegate, getProxyBuilder, getRegistrationGroupItems, getRegistrationGroups, getVariable, getVariables, handleNodeAttributes, invokeMethod, invokeMethod, newContext, nodeCompleted, popContext, postNodeCompletion, registerBeanFactory, registerBeanFactory, registerExplicitMethod, registerExplicitMethod, registerExplicitProperty, registerExplicitProperty, registerFactory, registerFactory, removeAttributeDelegate, removePostInstantiateDelegate, removePostNodeCompletionDelegate, removePreInstantiateDelegate, reset, resolveExplicitMethod, resolveExplicitProperty, restoreFromContinuationData, setClosureDelegate, setMethodMissingDelegate, setNameMappingClosure, setNodeAttributes, setParent, setProperty, setPropertyMissingDelegate, setProxyBuilder, setVariable, withBuilder, withBuilder, withBuilder`

  ### Methods inherited from class groovy.lang.Binding

  `hasVariable, removeVariable`

  ### Methods inherited from class groovy.lang.GroovyObjectSupport

  `getMetaClass, setMetaClass`

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

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

- ## Field Details

  - ### NODE_CLASS

    public static final String NODE_CLASS
    Context key for the resolved node class.
    See Also:
      - Constant Field Values

  - ### NODE_NAME

    public static final String NODE_NAME
    Context key for the resolved node name.
    See Also:
      - Constant Field Values

  - ### OBJECT_ID

    public static final String OBJECT_ID
    Context key for a synthetic object identifier.
    See Also:
      - Constant Field Values

  - ### LAZY_REF

    public static final String LAZY_REF
    Context key indicating that a reference should be resolved lazily.
    See Also:
      - Constant Field Values

  - ### CLASSNAME_RESOLVER_KEY

    public static final String CLASSNAME_RESOLVER_KEY
    Option key selecting a class-name resolver strategy.
    See Also:
      - Constant Field Values

  - ### CLASSNAME_RESOLVER_REFLECTION

    public static final String CLASSNAME_RESOLVER_REFLECTION
    Resolver option that uses reflection against the graph model.
    See Also:
      - Constant Field Values

  - ### CLASSNAME_RESOLVER_REFLECTION_ROOT

    public static final String CLASSNAME_RESOLVER_REFLECTION_ROOT
    Resolver option holding the root package for reflection lookup.
    See Also:
      - Constant Field Values

- ## Constructor Details

  - ### ObjectGraphBuilder

    public ObjectGraphBuilder()
    Creates an object graph builder with default resolver strategies.

- ## Method Details

  - ### getBeanFactoryName

    public String getBeanFactoryName()
    Returns the current name of the 'bean' node.

  - ### getChildPropertySetter

    public ObjectGraphBuilder.ChildPropertySetter getChildPropertySetter()
    Returns the current ChildPropertySetter.

  - ### getClassLoader

    public ClassLoader getClassLoader()
    Returns the classLoader used to load a node's class.

  - ### getClassNameResolver

    public ObjectGraphBuilder.ClassNameResolver getClassNameResolver()
    Returns the current ClassNameResolver.

  - ### getNewInstanceResolver

    public ObjectGraphBuilder.NewInstanceResolver getNewInstanceResolver()
    Returns the current NewInstanceResolver.

  - ### getRelationNameResolver

    public ObjectGraphBuilder.RelationNameResolver getRelationNameResolver()
    Returns the current RelationNameResolver.

  - ### isLazyReferencesAllowed

    public boolean isLazyReferencesAllowed()
    Returns true if references can be resolved lazily

  - ### setBeanFactoryName

    public void setBeanFactoryName(String beanFactoryName)
    Sets the name for the 'bean' node.

  - ### setChildPropertySetter

    public void setChildPropertySetter(Object childPropertySetter)
    Sets the current ChildPropertySetter.
    It will assign DefaultChildPropertySetter if null.
    It accepts a ChildPropertySetter instance or a Closure.

  - ### setClassLoader

    public void setClassLoader(ClassLoader classLoader)
    Sets the classLoader used to load a node's class.

  - ### setClassNameResolver

    public void setClassNameResolver(Object classNameResolver)
    Sets the current ClassNameResolver.
    It will assign DefaultClassNameResolver if null.
    It accepts a ClassNameResolver instance, a String, a Closure or a Map.

  - ### setIdentifierResolver

    public void setIdentifierResolver(Object identifierResolver)
    Sets the current IdentifierResolver.
    It will assign DefaultIdentifierResolver if null.
    It accepts a IdentifierResolver instance, a String or a Closure.

  - ### setLazyReferencesAllowed

    public void setLazyReferencesAllowed(boolean lazyReferencesAllowed)
    Sets whether references can be resolved lazily or not.

  - ### setNewInstanceResolver

    public void setNewInstanceResolver(Object newInstanceResolver)
    Sets the current NewInstanceResolver.
    It will assign DefaultNewInstanceResolver if null.
    It accepts a NewInstanceResolver instance or a Closure.

  - ### setReferenceResolver

    public void setReferenceResolver(Object referenceResolver)
    Sets the current ReferenceResolver.
    It will assign DefaultReferenceResolver if null.
    It accepts a ReferenceResolver instance, a String or a Closure.

  - ### setRelationNameResolver

    public void setRelationNameResolver(ObjectGraphBuilder.RelationNameResolver relationNameResolver)
    Sets the current RelationNameResolver.
    It will assign DefaultRelationNameResolver if null.

  - ### postInstantiate

    protected void postInstantiate(Object name, Map attributes, Object node)
    A hook after the factory creates the node and before attributes are set.
    It will call any registered postInstantiateDelegates, if you override this method be sure to call this impl somewhere in your code.
    Overrides:
      `postInstantiate` in class `FactoryBuilderSupport`
    Parameters:
      `name` - the name of the node
      `attributes` - the attributes for the node
      `node` - the object created by the node factory

  - ### preInstantiate

    protected void preInstantiate(Object name, Map attributes, Object value)
    A hook before the factory creates the node.
    It will call any registered preInstantiateDelegates, if you override this method be sure to call this impl somewhere in your code.
    Overrides:
      `preInstantiate` in class `FactoryBuilderSupport`
    Parameters:
      `name` - the name of the node
      `attributes` - the attributes of the node
      `value` - the value argument(s) of the node

  - ### resolveFactory

    protected Factory resolveFactory(Object name, Map attributes, Object value)
    This is a hook for subclasses to plug in a custom strategy for mapping names to factories.
    Overrides:
      `resolveFactory` in class `FactoryBuilderSupport`
    Parameters:
      `name` - the name of the factory
      `attributes` - the attributes from the node
      `value` - value arguments from te node
    Returns:
      the Factory associated with name.