GDSL Awesomeness – Defining methods in a closure passed to method of particular name
hi,
Sometimes we need to add specific methods in the closures which are passed to methods with a particular name. This can be simply done as follows
Suppose we need to add the method named “setHeaders(Map headers)” in all closures passed to method with name “withREST”
[java]
//Get the context for all closures
def ctx = context(scope: closureScope())
contributor(ctx, {
//See if closure is called within method "withREST"
def call = enclosingCall("withREST")
if (call) {
method name: "setHeaders", type: "void", params: [headers: Map]
}
})
[/java]
Read Further in the “GDSL AWESOMENESS” Series
- GDSL Awesomeness – Introduction to GDSL in IntelliJ Idea
- GDSL Awesomeness – Understanding Context And Contributors in Detail
- GDSL Awesomeness – Defining dynamic property in a class
- GDSL Awesomeness – Defining dynamic method in a class
- GDSL Awesomeness – Adding Hinting for missingMethod implementation
- GDSL Awesomeness – Setting a global context
- GDSL Awesomeness – Delegating Closure Calls
- GDSL Awesomeness – Defining methods in a closure passed to method of particular name
- GDSL Awesomeness – Defining Properties in a closure passed to method of particular name
- GDSL Awesomeness – Contributing to classes which match a path/name pattern
- GDSL Awesomeness – contributing methods with current class return types or parameters
- GDSL Awesomeness – AutoComplete Script for grails-Mail-Plugin “sendMail” closure
- GDSL Awesomeness – Getting Code of a method or Field in GDSL Script
- GDSL Awesomeness – Advanced Example showing domain properties implementation
Hope It Helped.
Kushal Likhi