org.codehaus.groovy.grails.orm.hibernate.support
Class ClosureEventTriggeringInterceptor
java.lang.Object
org.hibernate.event.internal.AbstractReassociateEventListener
org.hibernate.event.internal.AbstractSaveEventListener
org.hibernate.event.internal.DefaultSaveOrUpdateEventListener
org.codehaus.groovy.grails.orm.hibernate.support.ClosureEventTriggeringInterceptor
- All Implemented Interfaces:
- java.io.Serializable, org.hibernate.event.spi.PostDeleteEventListener, org.hibernate.event.spi.PostInsertEventListener, org.hibernate.event.spi.PostLoadEventListener, org.hibernate.event.spi.PostUpdateEventListener, org.hibernate.event.spi.PreDeleteEventListener, org.hibernate.event.spi.PreInsertEventListener, org.hibernate.event.spi.PreLoadEventListener, org.hibernate.event.spi.PreUpdateEventListener, org.hibernate.event.spi.SaveOrUpdateEventListener, org.springframework.beans.factory.Aware, org.springframework.context.ApplicationContextAware
public class ClosureEventTriggeringInterceptor
- extends org.hibernate.event.internal.DefaultSaveOrUpdateEventListener
- implements org.springframework.context.ApplicationContextAware, org.hibernate.event.spi.PreLoadEventListener, org.hibernate.event.spi.PostLoadEventListener, org.hibernate.event.spi.PostInsertEventListener, org.hibernate.event.spi.PostUpdateEventListener, org.hibernate.event.spi.PostDeleteEventListener, org.hibernate.event.spi.PreDeleteEventListener, org.hibernate.event.spi.PreUpdateEventListener, org.hibernate.event.spi.PreInsertEventListener
Listens for Hibernate events and publishes corresponding Datastore events.
- Since:
- 1.0
- See Also:
- Serialized Form
| Nested classes/interfaces inherited from class org.hibernate.event.internal.AbstractSaveEventListener |
org.hibernate.event.internal.AbstractSaveEventListener.EntityState |
|
Method Summary |
static void |
addNullabilityCheckerPreInsertEventListener(org.hibernate.event.service.spi.EventListenerRegistry listenerRegistry)
|
protected java.lang.Boolean |
getAssumedUnsaved()
Prevents hitting the database for an extra check if the row exists in the database. |
static void |
markInsertActive()
Called by org.codehaus.groovy.grails.orm.hibernate.metaclass.SavePersistentMethod's performInsert
to set a ThreadLocal variable that determines the value for getAssumedUnsaved(). |
void |
onPostDelete(org.hibernate.event.spi.PostDeleteEvent hibernateEvent)
|
void |
onPostInsert(org.hibernate.event.spi.PostInsertEvent hibernateEvent)
|
void |
onPostLoad(org.hibernate.event.spi.PostLoadEvent hibernateEvent)
|
void |
onPostUpdate(org.hibernate.event.spi.PostUpdateEvent hibernateEvent)
|
boolean |
onPreDelete(org.hibernate.event.spi.PreDeleteEvent hibernateEvent)
|
boolean |
onPreInsert(org.hibernate.event.spi.PreInsertEvent hibernateEvent)
|
void |
onPreLoad(org.hibernate.event.spi.PreLoadEvent hibernateEvent)
|
boolean |
onPreUpdate(org.hibernate.event.spi.PreUpdateEvent hibernateEvent)
|
void |
onSaveOrUpdate(org.hibernate.event.spi.SaveOrUpdateEvent hibernateEvent)
|
static void |
resetInsertActive()
Clears the ThreadLocal variable set by markInsertActive(). |
void |
setApplicationContext(org.springframework.context.ApplicationContext applicationContext)
|
void |
setDatastores(java.util.Map<org.hibernate.SessionFactory,HibernateDatastore> datastores)
|
| Methods inherited from class org.hibernate.event.internal.DefaultSaveOrUpdateEventListener |
entityIsDetached, entityIsPersistent, entityIsTransient, getCascadeAction, getUpdateId, invokeUpdateLifecycle, performSaveOrUpdate, performUpdate, reassociateIfUninitializedProxy, saveWithGeneratedOrRequestedId |
| Methods inherited from class org.hibernate.event.internal.AbstractSaveEventListener |
cascadeAfterSave, cascadeBeforeSave, getEntityState, getLoggableName, getMergeMap, invokeSaveLifecycle, isVersionIncrementDisabled, performSave, performSaveOrReplicate, saveWithGeneratedId, saveWithRequestedId, substituteValuesIfNecessary, visitCollectionsBeforeSave |
| Methods inherited from class org.hibernate.event.internal.AbstractReassociateEventListener |
reassociate |
| Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
IGNORED
public static final java.util.Collection<java.lang.String> IGNORED
ONLOAD_EVENT
public static final java.lang.String ONLOAD_EVENT
- See Also:
- Constant Field Values
ONLOAD_SAVE
public static final java.lang.String ONLOAD_SAVE
- See Also:
- Constant Field Values
BEFORE_LOAD_EVENT
public static final java.lang.String BEFORE_LOAD_EVENT
- See Also:
- Constant Field Values
BEFORE_INSERT_EVENT
public static final java.lang.String BEFORE_INSERT_EVENT
- See Also:
- Constant Field Values
AFTER_INSERT_EVENT
public static final java.lang.String AFTER_INSERT_EVENT
- See Also:
- Constant Field Values
BEFORE_UPDATE_EVENT
public static final java.lang.String BEFORE_UPDATE_EVENT
- See Also:
- Constant Field Values
AFTER_UPDATE_EVENT
public static final java.lang.String AFTER_UPDATE_EVENT
- See Also:
- Constant Field Values
BEFORE_DELETE_EVENT
public static final java.lang.String BEFORE_DELETE_EVENT
- See Also:
- Constant Field Values
AFTER_DELETE_EVENT
public static final java.lang.String AFTER_DELETE_EVENT
- See Also:
- Constant Field Values
AFTER_LOAD_EVENT
public static final java.lang.String AFTER_LOAD_EVENT
- See Also:
- Constant Field Values
ClosureEventTriggeringInterceptor
public ClosureEventTriggeringInterceptor()
setDatastores
public void setDatastores(java.util.Map<org.hibernate.SessionFactory,HibernateDatastore> datastores)
onSaveOrUpdate
public void onSaveOrUpdate(org.hibernate.event.spi.SaveOrUpdateEvent hibernateEvent)
throws org.hibernate.HibernateException
- Specified by:
onSaveOrUpdate in interface org.hibernate.event.spi.SaveOrUpdateEventListener- Overrides:
onSaveOrUpdate in class org.hibernate.event.internal.DefaultSaveOrUpdateEventListener
- Throws:
org.hibernate.HibernateException
onPreLoad
public void onPreLoad(org.hibernate.event.spi.PreLoadEvent hibernateEvent)
- Specified by:
onPreLoad in interface org.hibernate.event.spi.PreLoadEventListener
onPostLoad
public void onPostLoad(org.hibernate.event.spi.PostLoadEvent hibernateEvent)
- Specified by:
onPostLoad in interface org.hibernate.event.spi.PostLoadEventListener
onPreInsert
public boolean onPreInsert(org.hibernate.event.spi.PreInsertEvent hibernateEvent)
- Specified by:
onPreInsert in interface org.hibernate.event.spi.PreInsertEventListener
onPostInsert
public void onPostInsert(org.hibernate.event.spi.PostInsertEvent hibernateEvent)
- Specified by:
onPostInsert in interface org.hibernate.event.spi.PostInsertEventListener
onPreUpdate
public boolean onPreUpdate(org.hibernate.event.spi.PreUpdateEvent hibernateEvent)
- Specified by:
onPreUpdate in interface org.hibernate.event.spi.PreUpdateEventListener
onPostUpdate
public void onPostUpdate(org.hibernate.event.spi.PostUpdateEvent hibernateEvent)
- Specified by:
onPostUpdate in interface org.hibernate.event.spi.PostUpdateEventListener
onPreDelete
public boolean onPreDelete(org.hibernate.event.spi.PreDeleteEvent hibernateEvent)
- Specified by:
onPreDelete in interface org.hibernate.event.spi.PreDeleteEventListener
onPostDelete
public void onPostDelete(org.hibernate.event.spi.PostDeleteEvent hibernateEvent)
- Specified by:
onPostDelete in interface org.hibernate.event.spi.PostDeleteEventListener
setApplicationContext
public void setApplicationContext(org.springframework.context.ApplicationContext applicationContext)
- Specified by:
setApplicationContext in interface org.springframework.context.ApplicationContextAware
addNullabilityCheckerPreInsertEventListener
public static final void addNullabilityCheckerPreInsertEventListener(org.hibernate.event.service.spi.EventListenerRegistry listenerRegistry)
getAssumedUnsaved
protected java.lang.Boolean getAssumedUnsaved()
- Prevents hitting the database for an extra check if the row exists in the database.
ThreadLocal is used to pass the "insert:true" information to Hibernate.
- Overrides:
getAssumedUnsaved in class org.hibernate.event.internal.AbstractSaveEventListener
- See Also:
org.hibernate.event.def.AbstractSaveEventListener#getAssumedUnsaved()
markInsertActive
public static void markInsertActive()
- Called by org.codehaus.groovy.grails.orm.hibernate.metaclass.SavePersistentMethod's performInsert
to set a ThreadLocal variable that determines the value for getAssumedUnsaved().
resetInsertActive
public static void resetInsertActive()
- Clears the ThreadLocal variable set by markInsertActive().