From 449e8503e17a0e3c73a66a12845dab3cc1cbfa57 Mon Sep 17 00:00:00 2001 From: Gavin King Date: Thu, 5 Jun 2025 15:52:57 +0200 Subject: [PATCH] modernize the CallbackType enum --- .../hibernate/jpa/event/spi/CallbackType.java | 57 ++++++++++++++----- .../hibernate/jpa/event/spi/package-info.java | 12 +++- 2 files changed, 54 insertions(+), 15 deletions(-) diff --git a/hibernate-core/src/main/java/org/hibernate/jpa/event/spi/CallbackType.java b/hibernate-core/src/main/java/org/hibernate/jpa/event/spi/CallbackType.java index 7e23d243d18a..6f7c9a3cd85d 100644 --- a/hibernate-core/src/main/java/org/hibernate/jpa/event/spi/CallbackType.java +++ b/hibernate-core/src/main/java/org/hibernate/jpa/event/spi/CallbackType.java @@ -14,24 +14,53 @@ import jakarta.persistence.PreUpdate; /** + * Enumerates the entity lifecycle callback types defined by JPA. + * * @author Steve Ebersole */ public enum CallbackType { - PRE_UPDATE( PreUpdate.class ), - POST_UPDATE( PostUpdate.class ), - PRE_PERSIST( PrePersist.class ), - POST_PERSIST( PostPersist.class ), - PRE_REMOVE( PreRemove.class ), - POST_REMOVE( PostRemove.class ), - POST_LOAD( PostLoad.class ); - - private final Class callbackAnnotation; - - CallbackType(Class callbackAnnotation) { - this.callbackAnnotation = callbackAnnotation; - } + /** + * @see PreUpdate + */ + PRE_UPDATE, + /** + * @see PostUpdate + */ + POST_UPDATE, + /** + * @see PrePersist + */ + PRE_PERSIST, + /** + * @see PostPersist + */ + POST_PERSIST, + /** + * @see PreRemove + */ + PRE_REMOVE, + /** + * @see PostRemove + */ + POST_REMOVE, + /** + * @see PostLoad + */ + POST_LOAD; + /** + * The JPA-defined callback annotation type corresponding + * to this lifecycle event type. + */ public Class getCallbackAnnotation() { - return callbackAnnotation; + return switch ( this ) { + case PRE_PERSIST -> PrePersist.class; + case PRE_UPDATE -> PreUpdate.class; + case PRE_REMOVE -> PreRemove.class; + case POST_PERSIST -> PostPersist.class; + case POST_UPDATE -> PostUpdate.class; + case POST_REMOVE -> PostRemove.class; + case POST_LOAD -> PostLoad.class; + }; } } diff --git a/hibernate-core/src/main/java/org/hibernate/jpa/event/spi/package-info.java b/hibernate-core/src/main/java/org/hibernate/jpa/event/spi/package-info.java index d7d06318fb1f..523e434a37f3 100644 --- a/hibernate-core/src/main/java/org/hibernate/jpa/event/spi/package-info.java +++ b/hibernate-core/src/main/java/org/hibernate/jpa/event/spi/package-info.java @@ -4,6 +4,16 @@ */ /** - * The SPI contracts for supporting JPA lifecycle callbacks. + * The SPI contracts for supporting JPA lifecycle callbacks and + * {@link jakarta.persistence.EntityListeners entity listeners}. + * + * @see jakarta.persistence.EntityListeners + * @see jakarta.persistence.PrePersist + * @see jakarta.persistence.PreUpdate + * @see jakarta.persistence.PreRemove + * @see jakarta.persistence.PostPersist + * @see jakarta.persistence.PostUpdate + * @see jakarta.persistence.PostRemove + * @see jakarta.persistence.PostLoad */ package org.hibernate.jpa.event.spi;