groovy.util
Class ObjectGraphBuilder

java.lang.Object
  extended by groovy.lang.GroovyObjectSupport
      extended by groovy.lang.Binding
          extended by groovy.util.FactoryBuilderSupport
              extended by 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.

Author:
Scott Vlaminck (http://refactr.com), Andres Almiray

Nested Class Summary
static interface ObjectGraphBuilder.ChildPropertySetter
          Strategy for setting a child node on its parent.
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 & 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.
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
static String CLASSNAME_RESOLVER_KEY
           
static String CLASSNAME_RESOLVER_REFLECTION
           
static String CLASSNAME_RESOLVER_REFLECTION_ROOT
           
static String LAZY_REF
           
static String NODE_CLASS
           
static String NODE_NAME
           
static String OBJECT_ID
           
 
Fields inherited from class groovy.util.FactoryBuilderSupport
attributeDelegates, autoRegistrationComplete, autoRegistrationRunning, CHILD_BUILDER, CURRENT_BUILDER, CURRENT_FACTORY, CURRENT_NAME, CURRENT_NODE, explicitMethods, explicitProperties, OWNER, PARENT_BUILDER, PARENT_CONTEXT, PARENT_FACTORY, PARENT_NAME, PARENT_NODE, postInstantiateDelegates, postNodeCompletionDelegates, preInstantiateDelegates, registrationGroup, registrationGroupName
 
Constructor Summary
ObjectGraphBuilder()
           
 
Method Summary
 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.
protected  void preInstantiate(Object name, Map attributes, Object value)
          A hook before the factory creates the node.
protected  Factory resolveFactory(Object name, Map attributes, Object value)
          This is a hook for subclasses to plugin 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.
 void setClassLoader(ClassLoader classLoader)
          Sets the classLoader used to load a node's class.
 void setClassNameResolver(Object classNameResolver)
          Sets the current ClassNameResolver.
 void setIdentifierResolver(Object identifierResolver)
          Sets the current IdentifierResolver.
 void setLazyReferencesAllowed(boolean lazyReferencesAllowed)
          Sets whether references can be resolved lazily or not.
 void setNewInstanceResolver(Object newInstanceResolver)
          Sets the current NewInstanceResolver.
 void setReferenceResolver(Object referenceResolver)
          Sets the current ReferenceResolver.
 void setRelationNameResolver(ObjectGraphBuilder.RelationNameResolver relationNameResolver)
          Sets the current RelationNameResolver.
 
Methods inherited from class groovy.util.FactoryBuilderSupport
addAttributeDelegate, addDisposalClosure, addPostInstantiateDelegate, addPostNodeCompletionDelegate, addPreInstantiateDelegate, autoRegisterNodes, build, build, build, checkExplicitMethod, checkValueIsNull, checkValueIsType, checkValueIsTypeNotString, createNode, dispathNodeCall, dispose, getAttributeDelegates, getChildBuilder, getContext, getContextAttribute, getContexts, getContinuationData, getCurrent, getCurrentBuilder, getCurrentFactory, getCurrentName, getExplicitMethods, getExplicitProperties, getFactories, getLocalExplicitMethods, getLocalExplicitProperties, getLocalFactories, getName, getNameMappingClosure, getParentContext, getParentFactory, getParentName, getParentNode, getPostInstantiateDelegates, getPostNodeCompletionDelegates, getPreInstantiateDelegates, getProperty, 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, setNameMappingClosure, setNodeAttributes, setParent, setProperty, setProxyBuilder, setVariable, withBuilder, withBuilder, withBuilder
 
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 Detail

NODE_CLASS

public static final String NODE_CLASS
See Also:
Constant Field Values

NODE_NAME

public static final String NODE_NAME
See Also:
Constant Field Values

OBJECT_ID

public static final String OBJECT_ID
See Also:
Constant Field Values

LAZY_REF

public static final String LAZY_REF
See Also:
Constant Field Values

CLASSNAME_RESOLVER_KEY

public static final String CLASSNAME_RESOLVER_KEY
See Also:
Constant Field Values

CLASSNAME_RESOLVER_REFLECTION

public static final String CLASSNAME_RESOLVER_REFLECTION
See Also:
Constant Field Values

CLASSNAME_RESOLVER_REFLECTION_ROOT

public static final String CLASSNAME_RESOLVER_REFLECTION_ROOT
See Also:
Constant Field Values
Constructor Detail

ObjectGraphBuilder

public ObjectGraphBuilder()
Method Detail

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)
Description copied from class: FactoryBuilderSupport
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)
Description copied from class: FactoryBuilderSupport
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)
Description copied from class: FactoryBuilderSupport
This is a hook for subclasses to plugin 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.

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