Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
/*
* SPDX-License-Identifier: LGPL-2.1-or-later
* Copyright Red Hat Inc. and Hibernate Authors
*/
package org.hibernate.event.spi;

import org.hibernate.engine.spi.SessionFactoryImplementor;
import org.hibernate.persister.entity.EntityPersister;

/**
* Represents an operation successfully executed by the database.
*
* @author Gavin King
*
* @since 7
*/
public abstract class AbstractPostDatabaseOperationEvent extends AbstractEvent {

private final Object entity;
private final Object id;
private final EntityPersister persister;

/**
* Constructs an event containing the pertinent information.
*
* @param source The session from which the event originated.
* @param entity The entity to be involved in the database operation.
* @param id The entity id to be involved in the database operation.
* @param persister The entity's persister.
*/
public AbstractPostDatabaseOperationEvent(
EventSource source,
Object entity,
Object id,
EntityPersister persister) {
super( source );
this.entity = entity;
this.id = id;
this.persister = persister;
}

/**
* Retrieves the entity involved in the database operation.
*
* @return The entity.
*/
public Object getEntity() {
return entity;
}

/**
* The id to be used in the database operation.
*
* @return The id.
*/
public Object getId() {
return id;
}

/**
* The persister for the entity.
*
* @return The entity persister.
*/
public EntityPersister getPersister() {
return persister;
}

/**
* The factory which owns the persister for the entity.
*
* @return The factory
*/
@Override
public SessionFactoryImplementor getFactory() {
return persister.getFactory();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
import org.hibernate.persister.entity.EntityPersister;

/**
* Represents an operation we are about to perform against the database.
* Represents an operation that is about to be executed by the database.
*
* @author Steve Ebersole
*/
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,9 @@

import java.util.Set;

/** Defines an event class for the auto-flushing of a session.
/**
* Event class for {@link org.hibernate.FlushMode#AUTO automatic}
* stateful session flush.
*
* @author Steve Ebersole
*/
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,16 +5,13 @@
package org.hibernate.event.spi;

/**
* An event for {@link org.hibernate.Session#clear()} listening
* Event class for {@link org.hibernate.Session#clear}.
*
* @author Steve Ebersole
*
* @see org.hibernate.Session#clear
*/
public class ClearEvent extends AbstractEvent {
/**
* Constructs an event from the given event session.
*
* @param source The session event source.
*/
public ClearEvent(EventSource source) {
super( source );
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,30 +5,27 @@
package org.hibernate.event.spi;

/**
* Defines an event class for the deletion of an entity.
* Event class for {@link org.hibernate.Session#remove}.
*
* @apiNote This class predates JPA, and today should
* really be named {@code RemoveEvent}.
*
* @author Steve Ebersole
*
* @see org.hibernate.Session#remove
*/
public class DeleteEvent extends AbstractEvent {
private final Object object;
private String entityName;
private boolean cascadeDeleteEnabled;
// TODO: The removeOrphan concept is a temporary "hack" for HHH-6484. This should be removed once action/task
// ordering is improved.
// TODO: The removeOrphan concept is a temporary "hack" for HHH-6484.
// This should be removed once action/task ordering is improved.
private boolean orphanRemovalBeforeUpdates;

/**
* Constructs a new DeleteEvent instance.
*
* @param object The entity to be deleted.
* @param source The session from which the delete event was generated.
*/
public DeleteEvent(Object object, EventSource source) {
super(source);
if (object == null) {
throw new IllegalArgumentException(
"attempt to create delete event with null entity"
);
throw new IllegalArgumentException( "attempt to create delete event with null entity" );
}
this.object = object;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,15 @@
*/
package org.hibernate.event.spi;


/**
* Defines an event class for the dirty-checking of a session.
* Event class for {@link org.hibernate.Session#isDirty}.
*
* @author Steve Ebersole
*
* @see org.hibernate.Session#isDirty
*/
public class DirtyCheckEvent extends FlushEvent {
public class DirtyCheckEvent extends AbstractEvent {
private boolean dirty;

public DirtyCheckEvent(EventSource source) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,13 @@
package org.hibernate.event.spi;

/**
* Defines an event class for the evicting of an entity.
* Event class for {@link org.hibernate.Session#evict}
* and {@link org.hibernate.Session#detach}.
*
* @author Steve Ebersole
*
* @see org.hibernate.Session#evict
* @see org.hibernate.Session#detach
*/
public class EvictEvent extends AbstractEvent {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,11 @@
package org.hibernate.event.spi;

/**
* Defines an event class for the flushing of a session.
* Event class for stateful session flush.
*
* @author Steve Ebersole
*
* @see org.hibernate.Session#flush
*/
public class FlushEvent extends AbstractEvent {
private int numberOfEntitiesProcessed;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,11 @@
import org.hibernate.LockOptions;

/**
* Defines an event class for the locking of an entity.
* Event class for {@link org.hibernate.Session#lock}.
*
* @author Steve Ebersole
*
* @see org.hibernate.Session#lock
*/
public class LockEvent extends AbstractEvent {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,11 @@
package org.hibernate.event.spi;

/**
* An event class for merge() and saveOrUpdateCopy()
* Event class for {@link org.hibernate.Session#merge}.
*
* @author Gavin King
*
* @see org.hibernate.Session#merge
*/
public class MergeEvent extends AbstractEvent {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,11 @@
package org.hibernate.event.spi;

/**
* An event class for persist()
* Event class for {@link org.hibernate.Session#persist}.
*
* @author Gavin King
*
* @see org.hibernate.Session#persist
*/
public class PersistEvent extends AbstractEvent {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,18 +4,14 @@
*/
package org.hibernate.event.spi;

import org.hibernate.engine.spi.SessionFactoryImplementor;
import org.hibernate.persister.entity.EntityPersister;

/**
* Occurs after deleting an item from the datastore
*
* @author Gavin King
*/
public class PostDeleteEvent extends AbstractEvent {
private final Object entity;
private final EntityPersister persister;
private final Object id;
public class PostDeleteEvent extends AbstractPostDatabaseOperationEvent {
private final Object[] deletedState;

public PostDeleteEvent(
Expand All @@ -24,30 +20,10 @@ public PostDeleteEvent(
Object[] deletedState,
EntityPersister persister,
EventSource source) {
super(source);
this.entity = entity;
this.id = id;
this.persister = persister;
super( source, entity, id, persister );
this.deletedState = deletedState;
}

public Object getId() {
return id;
}

public EntityPersister getPersister() {
return persister;
}

@Override
public SessionFactoryImplementor getFactory() {
return persister.getFactory();
}

public Object getEntity() {
return entity;
}

public Object[] getDeletedState() {
return deletedState;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,48 +4,24 @@
*/
package org.hibernate.event.spi;

import org.hibernate.engine.spi.SessionFactoryImplementor;
import org.hibernate.persister.entity.EntityPersister;

/**
* Occurs after inserting an item in the datastore
*
* @author Gavin King
*/
public class PostInsertEvent extends AbstractEvent {
private final Object entity;
private final EntityPersister persister;
public class PostInsertEvent extends AbstractPostDatabaseOperationEvent {
private final Object[] state;
private final Object id;

public PostInsertEvent(
Object entity,
Object id,
Object[] state,
EntityPersister persister,
EventSource source) {
super(source);
this.entity = entity;
this.id = id;
super( source, entity, id, persister );
this.state = state;
this.persister = persister;
}

public Object getEntity() {
return entity;
}

public Object getId() {
return id;
}

public EntityPersister getPersister() {
return persister;
}

@Override
public SessionFactoryImplementor getFactory() {
return persister.getFactory();
}

public Object[] getState() {
Expand Down
Loading
Loading