GDSL Awesomeness – Defining dynamic method in a class

24 / Sep / 2012 by Kushal Likhi 1 comments

We can define dynamic methods in a class as follows:

 

Suppose we have injected a method name .clone([boolean] clearTime) in Date which clones the date object and returns the cloned one. This method takes an boolean argument argument too.
We can do it as follows:
(See inline comments for description)
[java]

//First we need to define a context
def dateContext = context(ctype: "java.util.Date") //ctype: takes the target class full name.

//Now we need to contribute the method in the class
contribute(dateContext) {

//name: Name of the method
//type: The return type of the method
//params: Map of Arguments passed.
method name: ‘clone’, type: ‘java.util.Date’, params: [clearTime: Boolean]

}

[/java]

 

Read Further in the “GDSL AWESOMENESS” Series

  1. GDSL Awesomeness – Introduction to GDSL in IntelliJ Idea
  2. GDSL Awesomeness – Understanding Context And Contributors in Detail
  3. GDSL Awesomeness – Defining dynamic property in a class
  4. GDSL Awesomeness – Defining dynamic method in a class
  5. GDSL Awesomeness – Adding Hinting for missingMethod implementation
  6. GDSL Awesomeness – Setting a global context
  7. GDSL Awesomeness – Delegating Closure Calls
  8. GDSL Awesomeness – Defining methods in a closure passed to method of particular name
  9. GDSL Awesomeness – Defining Properties in a closure passed to method of particular name
  10. GDSL Awesomeness – Contributing to classes which match a path/name pattern
  11. GDSL Awesomeness – contributing methods with current class return types or parameters
  12. GDSL Awesomeness – AutoComplete Script for grails-Mail-Plugin “sendMail” closure
  13. GDSL Awesomeness – Getting Code of a method or Field in GDSL Script
  14. GDSL Awesomeness – Advanced Example showing domain properties implementation

 

Hope it helps

Kushal Likhi

FOUND THIS USEFUL? SHARE IT

comments (1 “GDSL Awesomeness – Defining dynamic method in a class”)

  1. łuparki

    Wow! This can be one particular of the most helpful blogs We’ve ever arrive across on this subject. Actually Wonderful. I am also an expert in this topic therefore I can understand your effort. łuparki

    Reply

Leave a Reply to łuparki Cancel reply

Your email address will not be published. Required fields are marked *