GDSL Awesomeness – Defining dynamic properties in a class
We can define dynamic properties in a class as follows:
Suppose we have injected a property named “UTCTimeInMills” in Date class which is of type “long”.
Now we need to enable syntax hinting for it, 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 property to the class
contribute(dateContext) {
//name: Name of the method
//type: The type of the property, give full class name here or the keyword for native types
property(name: "UTCTimeInMills", type: ‘long’)
}
[/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 helps
Kushal Likhi