package com.autobill.enhancer
import org.codehaus.groovy.grails.commons.DefaultGrailsDomainClass
import org.codehaus.groovy.grails.orm.hibernate.HibernateDatastore
import org.codehaus.groovy.grails.orm.hibernate.HibernateGormInstanceApi
/**
* Created by pritom on 17/10/2016.
*/
class MyCustomInstanceApi<D> extends HibernateGormInstanceApi<D> {
private HibernateGormInstanceApi gormInstanceApi
MyCustomInstanceApi(HibernateGormInstanceApi gormInstanceApi) {
super(gormInstanceApi.persistentClass, gormInstanceApi.datastore as HibernateDatastore, gormInstanceApi.classLoader)
this.gormInstanceApi = gormInstanceApi
}
@Override
D save(D instance) {
println("Saving-${instance}")
super.save(instance)
}
static void init(servletContext) {
servletContext.grailsApplication.domainClasses.each { DefaultGrailsDomainClass domainClass ->
def gormInstanceApi = domainClass.clazz.currentGormInstanceApi()
domainClass.clazz.setInstanceGormInstanceApi(new MyCustomInstanceApi(gormInstanceApi))
}
}
}