Pre and postprocessing

Often there is something else we should do with our entities before or after these will be mapped. You can do that right in a mapping defining pre and/or postprocessing code as closures. You will not find a better place for such calculations :) There are 6 hooks to be called during mapping: before, beforeAtoB, beforeBtoA, after, afterAtoB and afterBtoA.The closures can access a, b. Hooks before and after can access the direction flag: true is mapping a to b, false is mapping b to a.

  mappingFor a: Person, b: Employee

  beforeAtoB {
    // before mapping we need to check whether current user has permissions to work with a Person being mapped

  beforeBtoA {
    // before mapping Employee to Person we should notify logService

  afterAtoB {
    // after successful mapping we should register accessing a Person

  afterBtoA {
    // after successful mapping we should log importing an Employee
    logService.logImportingEmployee(b, securityService.currentUser)

Well, that's all.