|
Groovy example source code file (InvokeNormalMethodFromBuilder_Groovy657Bug.groovy)
The Groovy InvokeNormalMethodFromBuilder_Groovy657Bug.groovy source code
package groovy.bugs
/**
* <p>
* Test that ensures that:
* <ul>
* <li>it is possible to write a builder in Groovy
* <li>it is possible to call normal methods from the builder,
* without the methods being trapped endlessly by createNode()</li>
* </ul>
* </p>
*
* @author Guillaume Laforge
*/
class InvokeNormalMethodFromBuilder_Bug657 extends GroovyTestCase {
void testInvokeNormalMethod() {
def b = new Builder()
assert b.callNormalMethod() == "first"
def value = b.someNode() {}
assert value == "second"
}
}
class Builder extends BuilderSupport {
void setParent(Object parent, Object child) {}
Object createNode(Object name) { return createNode(name, [:], null) }
Object createNode(Object name, Map attributes) { return createNode(name, attributes, null) }
Object createNode(Object name, Object value) { return createNode(name, [:], value) }
Object createNode(Object name, Map attributes, Object value) {
println "create ${name}"
return callOtherStaticallyTypedMethod()
}
String callNormalMethod() { println "normalMethod"; return "first" }
String callOtherStaticallyTypedMethod() { println "otherMethod"; return "second" }
}
Other Groovy examples (source code examples)Here is a short list of links related to this Groovy InvokeNormalMethodFromBuilder_Groovy657Bug.groovy source code file: |
Other websites by Alvin Alexander:
Life/living in Alaska (OneMansAlaska.com)
How I Sold My Business (HowISoldMyBusiness.com)
Copyright 1998-2011 Alvin Alexander, devdaily.com
All Rights Reserved.