From 7c378847cbf635527d651c7c0711b5a55216b88a Mon Sep 17 00:00:00 2001 From: Gavin King Date: Wed, 19 Jul 2023 00:44:04 +0200 Subject: [PATCH] HHH-16912 return null from deprecated method instead of producing a CCE This is a band-aid over an error occurring in Liquibase. But it seems to me that Liquibase itself should be updated to use the new APIs. --- .../main/java/org/hibernate/mapping/KeyValue.java | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/hibernate-core/src/main/java/org/hibernate/mapping/KeyValue.java b/hibernate-core/src/main/java/org/hibernate/mapping/KeyValue.java index 2e4a56582b..d77d10669b 100644 --- a/hibernate-core/src/main/java/org/hibernate/mapping/KeyValue.java +++ b/hibernate-core/src/main/java/org/hibernate/mapping/KeyValue.java @@ -36,6 +36,9 @@ public interface KeyValue extends Value { /** * @deprecated Use {@link #createGenerator(IdentifierGeneratorFactory, Dialect, RootClass)} instead. + * + * @return {@code null} if the {@code Generator} returned by {@link #createGenerator} is not an instance + * of {@link IdentifierGenerator}. */ @Deprecated(since="6.2") default IdentifierGenerator createIdentifierGenerator( @@ -44,18 +47,23 @@ public interface KeyValue extends Value { String defaultCatalog, String defaultSchema, RootClass rootClass) { - return (IdentifierGenerator) createGenerator( identifierGeneratorFactory, dialect, rootClass ); + final Generator generator = createGenerator( identifierGeneratorFactory, dialect, rootClass ); + return generator instanceof IdentifierGenerator ? (IdentifierGenerator) generator : null; } /** * @deprecated Use {@link #createGenerator(IdentifierGeneratorFactory, Dialect, RootClass)} instead. + * + * @return {@code null} if the {@code Generator} returned by {@link #createGenerator} is not an instance + * of {@link IdentifierGenerator}. */ @Deprecated(since="6.2") default IdentifierGenerator createIdentifierGenerator( IdentifierGeneratorFactory identifierGeneratorFactory, Dialect dialect, RootClass rootClass) { - return (IdentifierGenerator) createGenerator( identifierGeneratorFactory, dialect, rootClass ); + final Generator generator = createGenerator( identifierGeneratorFactory, dialect, rootClass ); + return generator instanceof IdentifierGenerator ? (IdentifierGenerator) generator : null; } /**