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 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, 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()
-
Method Summary
All Methods Instance Methods Concrete Methods 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 lazilyprotected 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 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.
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
-
-
-
-
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
-
-
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 classFactoryBuilderSupport
- Parameters:
name
- the name of the nodeattributes
- the attributes for the nodenode
- 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 classFactoryBuilderSupport
- Parameters:
name
- the name of the nodeattributes
- the attributes of the nodevalue
- 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 classFactoryBuilderSupport
- Parameters:
name
- the name of the factoryattributes
- the attributes from the nodevalue
- value arguments from te node- Returns:
- the Factory associated with name.
-
-