Class DefaultReactiveMergeEventListener
- java.lang.Object
-
- org.hibernate.reactive.event.impl.DefaultReactiveMergeEventListener
-
- All Implemented Interfaces:
java.io.Serializable
,org.hibernate.event.spi.MergeEventListener
,org.hibernate.jpa.event.spi.CallbackRegistryConsumer
,ReactiveMergeEventListener
public class DefaultReactiveMergeEventListener extends java.lang.Object implements ReactiveMergeEventListener, org.hibernate.event.spi.MergeEventListener
A reactificDefaultMergeEventListener
.- See Also:
- Serialized Form
-
-
Constructor Summary
Constructors Constructor Description DefaultReactiveMergeEventListener()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected java.util.concurrent.CompletionStage<java.lang.Void>
cascadeAfterSave(org.hibernate.event.spi.EventSource source, org.hibernate.persister.entity.EntityPersister persister, java.lang.Object entity, org.hibernate.event.spi.MergeContext anything)
Cascade behavior is redefined by this subclass, disable superclass behaviorprotected java.util.concurrent.CompletionStage<java.lang.Void>
cascadeBeforeSave(org.hibernate.event.spi.EventSource source, org.hibernate.persister.entity.EntityPersister persister, java.lang.Object entity, org.hibernate.event.spi.MergeContext anything)
Cascade behavior is redefined by this subclass, disable superclass behaviorprotected java.util.concurrent.CompletionStage<java.lang.Void>
cascadeOnMerge(org.hibernate.event.spi.EventSource source, org.hibernate.persister.entity.EntityPersister persister, java.lang.Object entity, org.hibernate.event.spi.MergeContext copyCache)
Perform any cascades needed as part of this copy event.protected java.util.concurrent.CompletionStage<java.lang.Void>
copyValues(org.hibernate.persister.entity.EntityPersister persister, java.lang.Object entity, java.lang.Object target, org.hibernate.engine.spi.SessionImplementor source, org.hibernate.event.spi.MergeContext copyCache)
protected java.util.concurrent.CompletionStage<java.lang.Void>
copyValues(org.hibernate.persister.entity.EntityPersister persister, java.lang.Object entity, java.lang.Object target, org.hibernate.engine.spi.SessionImplementor source, org.hibernate.event.spi.MergeContext copyCache, org.hibernate.type.ForeignKeyDirection foreignKeyDirection)
protected java.util.concurrent.CompletionStage<java.lang.Void>
entityIsDetached(org.hibernate.event.spi.MergeEvent event, org.hibernate.event.spi.MergeContext copyCache)
protected java.util.concurrent.CompletionStage<java.lang.Void>
entityIsPersistent(org.hibernate.event.spi.MergeEvent event, org.hibernate.event.spi.MergeContext copyCache)
protected java.util.concurrent.CompletionStage<java.lang.Void>
entityIsTransient(org.hibernate.event.spi.MergeEvent event, org.hibernate.event.spi.MergeContext copyCache)
protected CascadingAction<org.hibernate.event.spi.MergeContext>
getCascadeReactiveAction()
protected java.util.Map<java.lang.Object,java.lang.Object>
getMergeMap(org.hibernate.event.spi.MergeContext context)
void
injectCallbackRegistry(org.hibernate.jpa.event.spi.CallbackRegistry callbackRegistry)
void
onMerge(org.hibernate.event.spi.MergeEvent event)
void
onMerge(org.hibernate.event.spi.MergeEvent event, org.hibernate.event.spi.MergeContext copiedAlready)
java.util.concurrent.CompletionStage<java.lang.Void>
reactiveOnMerge(org.hibernate.event.spi.MergeEvent event)
Handle the given merge event.java.util.concurrent.CompletionStage<java.lang.Void>
reactiveOnMerge(org.hibernate.event.spi.MergeEvent event, org.hibernate.event.spi.MergeContext copiedAlready)
Handle the given merge event.protected java.util.concurrent.CompletionStage<java.lang.Void>
reactivePerformSave(java.lang.Object entity, java.lang.Object id, org.hibernate.persister.entity.EntityPersister persister, boolean useIdentityColumn, C context, org.hibernate.event.spi.EventSource source, boolean requiresImmediateIdAccess)
Prepares the save call by checking the session caches for a pre-existing entity and performing any lifecycle callbacks.protected java.util.concurrent.CompletionStage<java.lang.Void>
reactivePerformSaveOrReplicate(java.lang.Object entity, org.hibernate.engine.spi.EntityKey key, org.hibernate.persister.entity.EntityPersister persister, boolean useIdentityColumn, C context, org.hibernate.event.spi.EventSource source, boolean requiresImmediateIdAccess)
Performs all the actual work needed to save an entity (well to get the save moved to the execution queue).protected java.util.concurrent.CompletionStage<java.lang.Void>
reactiveSaveWithGeneratedId(java.lang.Object entity, java.lang.String entityName, C context, org.hibernate.event.spi.EventSource source, boolean requiresImmediateIdAccess)
Prepares the save call using a newly generated id.protected java.util.concurrent.CompletionStage<java.lang.Void>
reactiveSaveWithRequestedId(java.lang.Object entity, java.lang.Object requestedId, java.lang.String entityName, C context, org.hibernate.event.spi.EventSource source)
Prepares the save call using the given requested id.protected boolean
substituteValuesIfNecessary(java.lang.Object entity, java.lang.Object id, java.lang.Object[] values, org.hibernate.persister.entity.EntityPersister persister, org.hibernate.engine.spi.SessionImplementor source)
Perform any property value substitution that is necessary (interceptor callback, version initialization...)protected boolean
visitCollectionsBeforeSave(java.lang.Object entity, java.lang.Object id, java.lang.Object[] values, org.hibernate.type.Type[] types, org.hibernate.event.spi.EventSource source)
-
-
-
Method Detail
-
onMerge
public void onMerge(org.hibernate.event.spi.MergeEvent event) throws org.hibernate.HibernateException
- Specified by:
onMerge
in interfaceorg.hibernate.event.spi.MergeEventListener
- Throws:
org.hibernate.HibernateException
-
onMerge
public void onMerge(org.hibernate.event.spi.MergeEvent event, org.hibernate.event.spi.MergeContext copiedAlready) throws org.hibernate.HibernateException
- Specified by:
onMerge
in interfaceorg.hibernate.event.spi.MergeEventListener
- Throws:
org.hibernate.HibernateException
-
getMergeMap
protected java.util.Map<java.lang.Object,java.lang.Object> getMergeMap(org.hibernate.event.spi.MergeContext context)
-
reactiveOnMerge
public java.util.concurrent.CompletionStage<java.lang.Void> reactiveOnMerge(org.hibernate.event.spi.MergeEvent event) throws org.hibernate.HibernateException
Handle the given merge event.- Specified by:
reactiveOnMerge
in interfaceReactiveMergeEventListener
- Parameters:
event
- The merge event to be handled.- Throws:
org.hibernate.HibernateException
-
reactiveOnMerge
public java.util.concurrent.CompletionStage<java.lang.Void> reactiveOnMerge(org.hibernate.event.spi.MergeEvent event, org.hibernate.event.spi.MergeContext copiedAlready) throws org.hibernate.HibernateException
Handle the given merge event.- Specified by:
reactiveOnMerge
in interfaceReactiveMergeEventListener
- Parameters:
event
- The merge event to be handled.- Throws:
org.hibernate.HibernateException
-
entityIsPersistent
protected java.util.concurrent.CompletionStage<java.lang.Void> entityIsPersistent(org.hibernate.event.spi.MergeEvent event, org.hibernate.event.spi.MergeContext copyCache)
-
entityIsTransient
protected java.util.concurrent.CompletionStage<java.lang.Void> entityIsTransient(org.hibernate.event.spi.MergeEvent event, org.hibernate.event.spi.MergeContext copyCache)
-
entityIsDetached
protected java.util.concurrent.CompletionStage<java.lang.Void> entityIsDetached(org.hibernate.event.spi.MergeEvent event, org.hibernate.event.spi.MergeContext copyCache)
-
copyValues
protected java.util.concurrent.CompletionStage<java.lang.Void> copyValues(org.hibernate.persister.entity.EntityPersister persister, java.lang.Object entity, java.lang.Object target, org.hibernate.engine.spi.SessionImplementor source, org.hibernate.event.spi.MergeContext copyCache)
-
copyValues
protected java.util.concurrent.CompletionStage<java.lang.Void> copyValues(org.hibernate.persister.entity.EntityPersister persister, java.lang.Object entity, java.lang.Object target, org.hibernate.engine.spi.SessionImplementor source, org.hibernate.event.spi.MergeContext copyCache, org.hibernate.type.ForeignKeyDirection foreignKeyDirection)
-
cascadeOnMerge
protected java.util.concurrent.CompletionStage<java.lang.Void> cascadeOnMerge(org.hibernate.event.spi.EventSource source, org.hibernate.persister.entity.EntityPersister persister, java.lang.Object entity, org.hibernate.event.spi.MergeContext copyCache)
Perform any cascades needed as part of this copy event.- Parameters:
source
- The merge event being processed.persister
- The persister of the entity being copied.entity
- The entity being copied.copyCache
- A cache of already copied instance.
-
getCascadeReactiveAction
protected CascadingAction<org.hibernate.event.spi.MergeContext> getCascadeReactiveAction()
-
cascadeAfterSave
protected java.util.concurrent.CompletionStage<java.lang.Void> cascadeAfterSave(org.hibernate.event.spi.EventSource source, org.hibernate.persister.entity.EntityPersister persister, java.lang.Object entity, org.hibernate.event.spi.MergeContext anything)
Cascade behavior is redefined by this subclass, disable superclass behavior- Parameters:
source
- The session from which the event originated.persister
- The entity's persister instance.entity
- The entity beng saved.anything
- Generally cascade-specific data
-
cascadeBeforeSave
protected java.util.concurrent.CompletionStage<java.lang.Void> cascadeBeforeSave(org.hibernate.event.spi.EventSource source, org.hibernate.persister.entity.EntityPersister persister, java.lang.Object entity, org.hibernate.event.spi.MergeContext anything)
Cascade behavior is redefined by this subclass, disable superclass behavior- Parameters:
source
- The session from which the save event originated.persister
- The entity's persister instance.entity
- The entity to be saved.anything
- Generally cascade-specific data
-
injectCallbackRegistry
public void injectCallbackRegistry(org.hibernate.jpa.event.spi.CallbackRegistry callbackRegistry)
- Specified by:
injectCallbackRegistry
in interfaceorg.hibernate.jpa.event.spi.CallbackRegistryConsumer
-
reactiveSaveWithRequestedId
protected java.util.concurrent.CompletionStage<java.lang.Void> reactiveSaveWithRequestedId(java.lang.Object entity, java.lang.Object requestedId, java.lang.String entityName, C context, org.hibernate.event.spi.EventSource source)
Prepares the save call using the given requested id.- Parameters:
entity
- The entity to be saved.requestedId
- The id to which to associate the entity.entityName
- The name of the entity being saved.context
- Generally cascade-specific information.source
- The session which is the source of this save event.- Returns:
- The id used to save the entity.
-
reactiveSaveWithGeneratedId
protected java.util.concurrent.CompletionStage<java.lang.Void> reactiveSaveWithGeneratedId(java.lang.Object entity, java.lang.String entityName, C context, org.hibernate.event.spi.EventSource source, boolean requiresImmediateIdAccess)
Prepares the save call using a newly generated id.- Parameters:
entity
- The entity to be savedentityName
- The entity-name for the entity to be savedcontext
- Generally cascade-specific information.source
- The session which is the source of this save event.requiresImmediateIdAccess
- does the event context require access to the identifier immediately after execution of this method (if not, post-insert style id generators may be postponed if we are outside a transaction).- Returns:
- The id used to save the entity; may be null depending on the type of id generator used and the requiresImmediateIdAccess value
-
reactivePerformSave
protected java.util.concurrent.CompletionStage<java.lang.Void> reactivePerformSave(java.lang.Object entity, java.lang.Object id, org.hibernate.persister.entity.EntityPersister persister, boolean useIdentityColumn, C context, org.hibernate.event.spi.EventSource source, boolean requiresImmediateIdAccess)
Prepares the save call by checking the session caches for a pre-existing entity and performing any lifecycle callbacks.- Parameters:
entity
- The entity to be saved.id
- The id by which to save the entity.persister
- The entity's persister instance.useIdentityColumn
- Is an identity column being used?context
- Generally cascade-specific information.source
- The session from which the event originated.requiresImmediateIdAccess
- does the event context require access to the identifier immediately after execution of this method (if not, post-insert style id generators may be postponed if we are outside a transaction).- Returns:
- The id used to save the entity; may be null depending on the type of id generator used and the requiresImmediateIdAccess value
-
reactivePerformSaveOrReplicate
protected java.util.concurrent.CompletionStage<java.lang.Void> reactivePerformSaveOrReplicate(java.lang.Object entity, org.hibernate.engine.spi.EntityKey key, org.hibernate.persister.entity.EntityPersister persister, boolean useIdentityColumn, C context, org.hibernate.event.spi.EventSource source, boolean requiresImmediateIdAccess)
Performs all the actual work needed to save an entity (well to get the save moved to the execution queue).- Parameters:
entity
- The entity to be savedkey
- The id to be used for saving the entity (or null, in the case of identity columns)persister
- The entity's persister instance.useIdentityColumn
- Should an identity column be used for id generation?context
- Generally cascade-specific information.source
- The session which is the source of the current event.requiresImmediateIdAccess
- Is access to the identifier required immediately after the completion of the save? persist(), for example, does not require this...- Returns:
- The id used to save the entity; may be null depending on the type of id generator used and the requiresImmediateIdAccess value
-
substituteValuesIfNecessary
protected boolean substituteValuesIfNecessary(java.lang.Object entity, java.lang.Object id, java.lang.Object[] values, org.hibernate.persister.entity.EntityPersister persister, org.hibernate.engine.spi.SessionImplementor source)
Perform any property value substitution that is necessary (interceptor callback, version initialization...)- Parameters:
entity
- The entityid
- The entity identifiervalues
- The snapshot entity statepersister
- The entity persistersource
- The originating session- Returns:
- True if the snapshot state changed such that reinjection of the values into the entity is required.
-
visitCollectionsBeforeSave
protected boolean visitCollectionsBeforeSave(java.lang.Object entity, java.lang.Object id, java.lang.Object[] values, org.hibernate.type.Type[] types, org.hibernate.event.spi.EventSource source)
-
-