Package groovy.util
Class BuilderSupport
java.lang.Object
groovy.lang.GroovyObjectSupport
groovy.util.BuilderSupport
- All Implemented Interfaces:
GroovyObject
- Direct Known Subclasses:
AntBuilder,DOMBuilder,MarkupBuilder,NamespaceBuilderSupport,NodeBuilder,SAXBuilder
Base class for creating arbitrary nested trees of objects or events.
-
Constructor Summary
ConstructorsConstructorDescriptionCreates a builder that manages its own node lifecycle.BuilderSupport(Closure nameMappingClosure, BuilderSupport proxyBuilder) Creates a builder with custom name mapping and delegated node operations.BuilderSupport(BuilderSupport proxyBuilder) Creates a builder that delegates node operations to another builder. -
Method Summary
Modifier and TypeMethodDescriptionprotected abstract ObjectcreateNode(Object name) Creates a node with the given name.protected abstract ObjectcreateNode(Object name, Object value) Creates a node with the given name and value.protected abstract ObjectcreateNode(Object name, Map attributes) Creates a node with the given name and attributes.protected abstract ObjectcreateNode(Object name, Map attributes, Object value) Creates a node with the given name, attributes, and value.protected ObjectdoInvokeMethod(String methodName, Object name, Object args) Creates a node for the given method invocation and processes any child closure.protected ObjectReturns the current node on the builder stack.protected ObjectA hook to allow names to be converted into some other object such as a QName in XML or ObjectName in JMX.invokeMethod(String methodName) Convenience method when no arguments are required.invokeMethod(String methodName, Object args) Invokes the given method.protected voidnodeCompleted(Object parent, Object node) A hook to allow nodes to be processed once they have had all of their children applied.protected ObjectpostNodeCompletion(Object parent, Object node) A hook to allow nodes to be processed once they have had all of their children applied and allows the actual node object that represents the Markup element to be changed.protected voidsetClosureDelegate(Closure closure, Object node) A strategy method to allow derived builders to use builder-trees and switch in different kinds of builders.protected voidsetCurrent(Object current) Updates the current node on the builder stack.protected abstract voidLinks a newly created child node to its parent.Methods inherited from class groovy.lang.GroovyObjectSupport
getMetaClass, setMetaClassMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface groovy.lang.GroovyObject
getProperty, setProperty
-
Constructor Details
-
BuilderSupport
public BuilderSupport()Creates a builder that manages its own node lifecycle. -
BuilderSupport
Creates a builder that delegates node operations to another builder.- Parameters:
proxyBuilder- the builder handling node creation callbacks
-
BuilderSupport
public BuilderSupport(@ClosureParams(value=SimpleType.class,options="java.lang.String") Closure nameMappingClosure, BuilderSupport proxyBuilder) Creates a builder with custom name mapping and delegated node operations.- Parameters:
nameMappingClosure- converts method names before node creationproxyBuilder- the builder handling node creation callbacks
-
-
Method Details
-
getCurrent
Returns the current node on the builder stack.- Returns:
- the current node, or
nullif none is active
-
setCurrent
Updates the current node on the builder stack.- Parameters:
current- the current node
-
invokeMethod
Convenience method when no arguments are required.- Parameters:
methodName- the name of the method to invoke- Returns:
- the result of the call
-
invokeMethod
Invokes the given method.- Parameters:
methodName- the name of the method to callargs- the arguments to use for the method call- Returns:
- the result of invoking the method
-
doInvokeMethod
Creates a node for the given method invocation and processes any child closure.- Parameters:
methodName- the original method namename- the mapped node nameargs- the invocation arguments- Returns:
- the created node, or a replacement from
postNodeCompletion(Object, Object)
-
setClosureDelegate
A strategy method to allow derived builders to use builder-trees and switch in different kinds of builders. This method should call the setDelegate() method on the closure which by default passes in this but if node is-a builder we could pass that in instead (or do something wacky too).- Parameters:
closure- the closure on which to call setDelegate()node- the node value that we've just created, which could be a builder
-
setParent
Links a newly created child node to its parent.- Parameters:
parent- the parent nodechild- the child node
-
createNode
Creates a node with the given name.- Parameters:
name- the node name- Returns:
- the created node
-
createNode
Creates a node with the given name and value.- Parameters:
name- the node namevalue- the node value- Returns:
- the created node
-
createNode
Creates a node with the given name and attributes.- Parameters:
name- the node nameattributes- the node attributes- Returns:
- the created node
-
createNode
Creates a node with the given name, attributes, and value.- Parameters:
name- the node nameattributes- the node attributesvalue- the node value- Returns:
- the created node
-
getName
A hook to allow names to be converted into some other object such as a QName in XML or ObjectName in JMX.- Parameters:
methodName- the name of the desired method- Returns:
- the object representing the name
-
nodeCompleted
A hook to allow nodes to be processed once they have had all of their children applied.- Parameters:
node- the current node being processedparent- the parent of the node being processed
-
postNodeCompletion
A hook to allow nodes to be processed once they have had all of their children applied and allows the actual node object that represents the Markup element to be changed.- Parameters:
node- the current node being processedparent- the parent of the node being processed- Returns:
- the node, possibly new, that represents the markup element
-