(Quick Reference)

17.6 Adding Methods at Compile Time - Reference Documentation

Authors: Graeme Rocher, Peter Ledbrook, Marc Palmer, Jeff Brown, Luke Daley, Burt Beckwith, Lari Hotari

Version: 3.0.11

17.6 Adding Methods at Compile Time

Grails 3.0 makes it easy to add new traits to existing artefact types from a plugin. For example say you wanted to add methods for manipulating dates to controllers. This can be done by first defining a trait in src/main/groovy:

package myplugin

trait DateTrait { Date currentDate() { return new Date() } }

Once you have a trait you must tell Grails which artefacts you want to inject the trait into at compile time. To do this you implement a TraitInjector:

package myplugin

@CompileStatic class ControllerTraitInjector implements TraitInjector {

@Override Class getTrait() { DateTrait }

@Override String[] getArtefactTypes() { ['Controller'] as String[] } }

The above TraitInjector will add the DateTrait to all controllers. The getArtefactTypes method defines the types of artefacts that the trait should be applied to.