Skip to content

Instantly share code, notes, and snippets.

@int128
Created August 19, 2014 15:33
Show Gist options
  • Save int128/8c949e04fbd071054ac4 to your computer and use it in GitHub Desktop.
Save int128/8c949e04fbd071054ac4 to your computer and use it in GitHub Desktop.
How to use the builder to obtain a collection of objects
class RemoteCollectionBuilder extends BuilderSupport {
@Override
protected Object createNode(Object name, Map attributes, Object value) {
println("createNode $name, $attributes, $value")
name
}
@Override
protected Object createNode(Object name, Map attributes) {
println("createNode $name, $attributes")
name
}
@Override
protected Object createNode(Object name, Object value) {
println("createNode $name, $value")
name
}
@Override
protected Object createNode(Object name) {
println("createNode $name")
name
}
@Override
protected void setParent(Object parent, Object child) {
println("setParent $parent, $child")
}
@Override
protected void setClosureDelegate(Closure closure, Object node) {
println("setClosureDelegate ${closure.toString()}, $node")
}
}
def remotes(Closure c) {
def builder = new RemoteCollectionBuilder()
builder.with(c)
}
remotes {
webServer {
role 'serversA'
host = 'web'
user = 'webuser'
}
}
createNode webServer
setClosureDelegate Script1$_run_closure1_closure2@1de3bb0, webServer
createNode role, serversA
setParent webServer, role
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment