Grails

Debugging in IntelliJ IDEA: Part 1

IntelliJ IDEA provides a handy debugger for grails, which simplifies debugging. Many people try avoiding using this awesome feature just because, either, they don't want to leave the old habit of using printlns or they complain about the performance issue, and bla bla bla. As per my observation, there is no performance difference between...

by laukendra@intelligrape.com
Tag: Intellij Idea
22-Apr-2014

Grails

GDSL Awesomeness – Setting a global context

Hi, Sometimes we need to set the context for the GDSL contributor to all the possible files and scripts in the project scope. This is a rare case scenario, but could be handy on some implementations.   This can be done by two techniques: Ignoring all filters passed to the "context" method. Setting the "ctype"...

by Kushal Likhi
Tag: Intellij Idea
25-Sep-2012

Grails

GDSL Awesomeness – Introduction to GDSL in IntelliJ Idea

One of the disadvantage of using meta-programming and DSL is that we don't get auto-completes in Our IDE. Hence IntelliJ provided us with an awesome and intelligent toolkit to handle dynamic properties and methods when writing code in groovy. In IntelliJ IDEA we can write GDSL Files in order to give us the auto-completes(code...

by Kushal Likhi
Tag: Intellij Idea
25-Sep-2012

Grails

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...

by Kushal Likhi
Tag: Intellij Idea
24-Sep-2012

Grails

GDSL Awesomeness – Defining dynamic method in a class

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...

by Kushal Likhi
Tag: Intellij Idea
24-Sep-2012

Grails

GDSL Awesomeness – Understanding Context And Contributors in Detail

GDSL Scripts are based on two main concepts: contexts and contributors. Hence we will discuss about these in detail here.   In GroovyDSL context is an entity which is supposed to give an answer to the question "Where?" this behavior will be available. Contexts are first-order citizens in GroovyDSL, so they may be stored in local...

by Kushal Likhi
Tag: Intellij Idea
24-Sep-2012

Grails

GDSL Awesomeness – Adding Hinting for missingMethod implementation

hi,   Suppose we have used method missing in our code and we want to give syntax-hinting for these methods then we can go as follows:   Suppose we have this class which implements method missing: [java] class Pixel { def Top def Left def Color def methodMissing(String name, args) { //...

by Kushal Likhi
Tag: Intellij Idea
24-Sep-2012

Grails

GDSL Awesomeness – Delegating Closure Calls

hi,   Very often we use delegates in our closure calls. It would be great if we could get code-hinting in the closure via the delegates.   Now let us take a very simple scenario, where we made a method "with" which delegates the delegate objet to closure and runs it. [java] class Delegator { static def...

by Kushal Likhi
Tag: Intellij Idea
24-Sep-2012

Grails

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...

by Kushal Likhi
Tag: Intellij Idea
24-Sep-2012

Grails

GDSL Awesomeness – Defining Properties in a closure passed to method of particular name

hi,   Sometimes we need to add specific properties 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 property named requestMethod of type String in all closures passed to method with name "withREST" [java] //Get the context for all...

by Kushal Likhi
Tag: Intellij Idea
24-Sep-2012

Grails

GDSL Awesomeness – Contributing to classes which match a path/name pattern

hi,   If we want to contribute to classes which matches a particular path/name pattern, then we can use PSI Class patterns to do it.   the code is as follows: [java] import com.intellij.patterns.PsiJavaPatterns import com.intellij.patterns.PlatformPatterns //get the context of all files, and enable path matching....

by Kushal Likhi
Tag: Intellij Idea
24-Sep-2012

Grails

GDSL Awesomeness – contributing methods with current class return types or parameters

Hi,   Sometimes we need to contribute dynamically using current target class type.   Lets take the example of .get() and .list() methods of Grails domain class. The signature of each method is as follows: public <DomainClassType> get(Long id) , Example: DemoClass.get(1) will return an object of "DemoClass" ...

by Kushal Likhi
Tag: Intellij Idea
24-Sep-2012