diff --git a/hibernate-core/src/main/java/org/hibernate/action/internal/UnresolvedEntityInsertActions.java b/hibernate-core/src/main/java/org/hibernate/action/internal/UnresolvedEntityInsertActions.java index 7dfdb4b90c79..cbdc72ca1de1 100644 --- a/hibernate-core/src/main/java/org/hibernate/action/internal/UnresolvedEntityInsertActions.java +++ b/hibernate-core/src/main/java/org/hibernate/action/internal/UnresolvedEntityInsertActions.java @@ -7,7 +7,6 @@ import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; -import java.lang.invoke.MethodHandles; import java.util.IdentityHashMap; import java.util.Map; import java.util.Set; @@ -21,10 +20,10 @@ import org.hibernate.engine.spi.SharedSessionContractImplementor; import org.hibernate.engine.spi.Status; import org.hibernate.event.spi.EventSource; +import org.hibernate.internal.CoreLogging; import org.hibernate.internal.CoreMessageLogger; import org.hibernate.internal.util.collections.IdentitySet; -import org.jboss.logging.Logger; import static java.util.Collections.emptySet; import static org.hibernate.pretty.MessageHelper.infoString; @@ -43,11 +42,7 @@ * @author Gail Badner */ public class UnresolvedEntityInsertActions { - private static final CoreMessageLogger LOG = Logger.getMessageLogger( - MethodHandles.lookup(), - CoreMessageLogger.class, - UnresolvedEntityInsertActions.class.getName() - ); + private static final CoreMessageLogger LOG = CoreLogging.messageLogger( UnresolvedEntityInsertActions.class ); private static final int INIT_SIZE = 5; diff --git a/hibernate-core/src/main/java/org/hibernate/boot/model/convert/internal/AttributeConverterManager.java b/hibernate-core/src/main/java/org/hibernate/boot/model/convert/internal/AttributeConverterManager.java index 42d33297547f..51c6d2f03571 100644 --- a/hibernate-core/src/main/java/org/hibernate/boot/model/convert/internal/AttributeConverterManager.java +++ b/hibernate-core/src/main/java/org/hibernate/boot/model/convert/internal/AttributeConverterManager.java @@ -49,7 +49,7 @@ public RegisteredConversion findRegisteredConversion(Class domainType) { public void addConverter(ConverterDescriptor descriptor) { if ( log.isTraceEnabled() ) { - log.tracef( "Starting AttributeConverterManager#addConverter : `%s`", + log.tracef( "Registering AttributeConverter '%s'", descriptor.getAttributeConverterClass().getName() ); } @@ -59,7 +59,7 @@ public void addConverter(ConverterDescriptor descriptor) { if ( registeredConversion != null ) { // we can skip registering the converter, the RegisteredConversion will always take precedence if ( log.isDebugEnabled() ) { - log.debugf( "Skipping registration of discovered AttributeConverter `%s` for auto-apply", + log.debugf( "Skipping registration of discovered AttributeConverter '%s' for auto-apply", descriptor.getAttributeConverterClass().getName() ); } return; @@ -114,7 +114,7 @@ public void addRegistration(RegisteredConversion conversion, BootstrapContext co if ( attributeConverterDescriptorsByClass != null ) { final var removed = attributeConverterDescriptorsByClass.remove( conversion.getConverterType() ); if ( removed != null && log.isDebugEnabled() ) { - log.debugf( "Removed potentially auto-applicable converter `%s` due to @ConverterRegistration", + log.debugf( "Removed potentially auto-applicable converter '%s' due to @ConverterRegistration", removed.getAttributeConverterClass().getName() ); } } diff --git a/hibernate-core/src/main/java/org/hibernate/engine/jdbc/JdbcLogging.java b/hibernate-core/src/main/java/org/hibernate/engine/jdbc/JdbcLogging.java index 78acc31947ec..5064e9568efa 100644 --- a/hibernate-core/src/main/java/org/hibernate/engine/jdbc/JdbcLogging.java +++ b/hibernate-core/src/main/java/org/hibernate/engine/jdbc/JdbcLogging.java @@ -21,6 +21,7 @@ import java.lang.invoke.MethodHandles; import static org.jboss.logging.Logger.Level.DEBUG; +import static org.jboss.logging.Logger.Level.INFO; import static org.jboss.logging.Logger.Level.TRACE; import static org.jboss.logging.Logger.Level.WARN; @@ -139,7 +140,27 @@ public interface JdbcLogging extends BasicLogger { id = 100018) void logDriverInfo(String name, String version, int major, int minor, int jdbcMajor, int jdbcMinor); + @LogMessage(level = TRACE) + @Message(value = "Unable to reset connection back to auto-commit", id = 100019) + void unableToResetAutoCommit(); + + @LogMessage(level = INFO) + @Message(value = "Unable to release isolated connection", id = 100020) + void unableToReleaseIsolatedConnection(@Cause Throwable ignored); + + @LogMessage(level = INFO) + @Message(value = "Unable to roll back isolated connection on exception ", id = 100021) + void unableToRollBackIsolatedConnection(@Cause Exception ignored); + @LogMessage(level = WARN) - @Message(value = "Called joinTransaction() on a non-JTA EntityManager (ignoring)", id = 100020) + @Message(value = "Called joinTransaction() on a non-JTA EntityManager (ignoring)", id = 100025) void callingJoinTransactionOnNonJtaEntityManager(); + + @LogMessage(level = TRACE) + @Message(value = "Current timestamp retrieved from database: %s (nanos=%s, time=%s)", id = 100031) + void currentTimestampRetrievedFromDatabase(Object timestamp, int nanos, long time); + + @LogMessage(level = TRACE) + @Message(value = "Sequence value retrieved from database: %s", id = 100032) + void sequenceValueRetrievedFromDatabase(Number sequenceValue); } diff --git a/hibernate-core/src/main/java/org/hibernate/engine/spi/CollectionEntry.java b/hibernate-core/src/main/java/org/hibernate/engine/spi/CollectionEntry.java index 887ee7bbcaa6..1309e479b9d0 100644 --- a/hibernate-core/src/main/java/org/hibernate/engine/spi/CollectionEntry.java +++ b/hibernate-core/src/main/java/org/hibernate/engine/spi/CollectionEntry.java @@ -261,7 +261,7 @@ public void afterAction(PersistentCollection collection) { * Reset the stored snapshot for both the persistent collection and this collection entry. * Used during the merge of detached collections. * - * @param collection the persistentcollection to be updated + * @param collection the persistent collection to be updated * @param storedSnapshot the new stored snapshot */ public void resetStoredSnapshot(PersistentCollection collection, Serializable storedSnapshot) { diff --git a/hibernate-core/src/main/java/org/hibernate/generator/internal/CurrentTimestampGeneration.java b/hibernate-core/src/main/java/org/hibernate/generator/internal/CurrentTimestampGeneration.java index 86bebe98ba9e..4aa62c96be74 100644 --- a/hibernate-core/src/main/java/org/hibernate/generator/internal/CurrentTimestampGeneration.java +++ b/hibernate-core/src/main/java/org/hibernate/generator/internal/CurrentTimestampGeneration.java @@ -216,24 +216,23 @@ static CurrentTimestampGeneratorDelegate getGeneratorDelegate( context.getDatabase().getDialect(), basicValue.getMetadata() ); - final Clock baseClock = context.getServiceRegistry() - .requireService( ConfigurationService.class ) - .getSetting( CLOCK_SETTING_NAME, value -> (Clock) value ); + final Clock baseClock = + context.getServiceRegistry().requireService( ConfigurationService.class ) + .getSetting( CLOCK_SETTING_NAME, value -> (Clock) value ); final Key key = new Key( propertyType, baseClock, size.getPrecision() == null ? 0 : size.getPrecision() ); final CurrentTimestampGeneratorDelegate delegate = GENERATOR_DELEGATES.get( key ); if ( delegate != null ) { return delegate; } - final BiFunction<@Nullable Clock, Integer, CurrentTimestampGeneratorDelegate> producer = GENERATOR_PRODUCERS.get( key.clazz ); + final var producer = GENERATOR_PRODUCERS.get( key.clazz ); if ( producer == null ) { return null; } - final CurrentTimestampGeneratorDelegate generatorDelegate = producer.apply( key.clock, key.precision ); - final CurrentTimestampGeneratorDelegate old = GENERATOR_DELEGATES.putIfAbsent( - key, - generatorDelegate - ); - return old != null ? old : generatorDelegate; + else { + final var generatorDelegate = producer.apply( key.clock, key.precision ); + final var old = GENERATOR_DELEGATES.putIfAbsent( key, generatorDelegate ); + return old != null ? old : generatorDelegate; + } case DB: return null; default: @@ -280,40 +279,6 @@ interface CurrentTimestampGeneratorDelegate { Object generate(); } - private static class Key { - private final Class clazz; - private final @Nullable Clock clock; - private final int precision; - - public Key(Class clazz, @Nullable Clock clock, int precision) { - this.clazz = clazz; - this.clock = clock; - this.precision = precision; - } - - @Override - public boolean equals(Object o) { - if ( this == o ) { - return true; - } - if ( o == null || getClass() != o.getClass() ) { - return false; - } - - Key key = (Key) o; - - if ( precision != key.precision ) { - return false; - } - return clock == key.clock && clazz.equals( key.clazz ); - } - - @Override - public int hashCode() { - int result = clazz.hashCode(); - result = 31 * result + ( clock == null ? 0 : clock.hashCode() ); - result = 31 * result + precision; - return result; - } + private record Key(Class clazz, @Nullable Clock clock, int precision) { } } diff --git a/hibernate-core/src/main/java/org/hibernate/generator/internal/SourceGeneration.java b/hibernate-core/src/main/java/org/hibernate/generator/internal/SourceGeneration.java index 577fa62e8055..fa88c34e57de 100644 --- a/hibernate-core/src/main/java/org/hibernate/generator/internal/SourceGeneration.java +++ b/hibernate-core/src/main/java/org/hibernate/generator/internal/SourceGeneration.java @@ -15,12 +15,9 @@ import org.hibernate.generator.EventTypeSets; import org.hibernate.generator.GeneratorCreationContext; import org.hibernate.generator.BeforeExecutionGenerator; -import org.hibernate.internal.CoreMessageLogger; import org.hibernate.type.descriptor.java.JavaType; -import org.jboss.logging.Logger; -import java.lang.invoke.MethodHandles; import java.lang.reflect.Member; import java.sql.CallableStatement; import java.sql.PreparedStatement; @@ -30,6 +27,7 @@ import java.util.EnumSet; import static java.sql.Types.TIMESTAMP; +import static org.hibernate.engine.jdbc.JdbcLogging.JDBC_MESSAGE_LOGGER; import static org.hibernate.generator.EventTypeSets.INSERT_AND_UPDATE; /** @@ -52,12 +50,6 @@ @Internal public class SourceGeneration implements BeforeExecutionGenerator { - private static final CoreMessageLogger log = Logger.getMessageLogger( - MethodHandles.lookup(), - CoreMessageLogger.class, - SourceGeneration.class.getName() - ); - private final JavaType propertyType; private final CurrentTimestampGeneration.CurrentTimestampGeneratorDelegate valueGenerator; @@ -97,7 +89,9 @@ private Timestamp getCurrentTimestamp(SharedSessionContractImplementor session) final Timestamp ts = callable ? extractCalledResult( statement, coordinator, timestampSelectString ) : extractResult( statement, coordinator, timestampSelectString ); - logResult( ts ); + if ( JDBC_MESSAGE_LOGGER.isTraceEnabled() ) { + JDBC_MESSAGE_LOGGER.currentTimestampRetrievedFromDatabase( ts, ts.getNanos(), ts.getTime() ); + } return ts; } catch (SQLException e) { @@ -130,14 +124,4 @@ private static Timestamp extractCalledResult(PreparedStatement statement, JdbcCo return callable.getTimestamp( 1 ); } - private static void logResult(Timestamp ts) { - if ( log.isTraceEnabled() ) { - log.tracev( - "Current timestamp retrieved from db : {0} (nanos={1}, time={2})", - ts, - ts.getNanos(), - ts.getTime() - ); - } - } } diff --git a/hibernate-core/src/main/java/org/hibernate/id/enhanced/HiLoOptimizer.java b/hibernate-core/src/main/java/org/hibernate/id/enhanced/HiLoOptimizer.java index d745b209a8a8..718ff24edd22 100644 --- a/hibernate-core/src/main/java/org/hibernate/id/enhanced/HiLoOptimizer.java +++ b/hibernate-core/src/main/java/org/hibernate/id/enhanced/HiLoOptimizer.java @@ -75,7 +75,8 @@ public HiLoOptimizer(Class returnClass, int incrementSize) { throw new HibernateException( "increment size cannot be less than 1" ); } if ( log.isTraceEnabled() ) { - log.tracev( "Creating hilo optimizer with [incrementSize={0}; returnClass={1}]", incrementSize, returnClass.getName() ); + log.tracev( "Creating hilo optimizer with [incrementSize={0}; returnClass={1}]", + incrementSize, returnClass.getName() ); } } diff --git a/hibernate-core/src/main/java/org/hibernate/id/enhanced/LegacyHiLoAlgorithmOptimizer.java b/hibernate-core/src/main/java/org/hibernate/id/enhanced/LegacyHiLoAlgorithmOptimizer.java index 68db55144592..1cfd4972a86d 100644 --- a/hibernate-core/src/main/java/org/hibernate/id/enhanced/LegacyHiLoAlgorithmOptimizer.java +++ b/hibernate-core/src/main/java/org/hibernate/id/enhanced/LegacyHiLoAlgorithmOptimizer.java @@ -47,7 +47,8 @@ public LegacyHiLoAlgorithmOptimizer(Class returnClass, int incrementSize) { throw new HibernateException( "increment size cannot be less than 1" ); } if ( log.isTraceEnabled() ) { - log.tracev( "Creating hilo optimizer (legacy) with [incrementSize={0}; returnClass={1}]", incrementSize, returnClass.getName() ); + log.tracev( "Creating hilo optimizer (legacy) with [incrementSize={0}; returnClass={1}]", + incrementSize, returnClass.getName() ); } initialMaxLo = incrementSize; } diff --git a/hibernate-core/src/main/java/org/hibernate/id/enhanced/PooledOptimizer.java b/hibernate-core/src/main/java/org/hibernate/id/enhanced/PooledOptimizer.java index 7e7bbad4ae9c..1ab0ffa0f044 100644 --- a/hibernate-core/src/main/java/org/hibernate/id/enhanced/PooledOptimizer.java +++ b/hibernate-core/src/main/java/org/hibernate/id/enhanced/PooledOptimizer.java @@ -57,11 +57,8 @@ public PooledOptimizer(Class returnClass, int incrementSize) { throw new HibernateException( "increment size cannot be less than 1" ); } if ( log.isTraceEnabled() ) { - log.tracev( - "Creating pooled optimizer with [incrementSize={0}; returnClass={1}]", - incrementSize, - returnClass.getName() - ); + log.tracev( "Creating pooled optimizer with [incrementSize={0}; returnClass={1}]", + incrementSize, returnClass.getName() ); } } diff --git a/hibernate-core/src/main/java/org/hibernate/id/enhanced/SequenceGeneratorLogger.java b/hibernate-core/src/main/java/org/hibernate/id/enhanced/SequenceGeneratorLogger.java new file mode 100644 index 000000000000..1561bb54962f --- /dev/null +++ b/hibernate-core/src/main/java/org/hibernate/id/enhanced/SequenceGeneratorLogger.java @@ -0,0 +1,64 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * Copyright Red Hat Inc. and Hibernate Authors + */ +package org.hibernate.id.enhanced; + +import org.hibernate.Internal; +import org.hibernate.internal.log.SubSystemLogging; +import org.jboss.logging.BasicLogger; +import org.jboss.logging.Logger; +import org.jboss.logging.annotations.LogMessage; +import org.jboss.logging.annotations.Message; +import org.jboss.logging.annotations.MessageLogger; +import org.jboss.logging.annotations.ValidIdRange; + +import java.lang.invoke.MethodHandles; + +import static org.jboss.logging.Logger.Level.INFO; +import static org.jboss.logging.Logger.Level.WARN; + +/** + * Logging related to {@link TableGenerator} operations + * + * @author Gavin King + */ +@SubSystemLogging( + name = SequenceGeneratorLogger.NAME, + description = "Logging related to sequence-based identifier generation" +) +@MessageLogger(projectCode = "HHH") +@ValidIdRange(min = 90201, max = 90300) +@Internal +public interface SequenceGeneratorLogger extends BasicLogger { + String NAME = SubSystemLogging.BASE + ".id.table"; + + Logger SEQUENCE_GENERATOR_LOGGER = Logger.getLogger(NAME); + SequenceGeneratorLogger SEQUENCE_GENERATOR_MESSAGE_LOGGER = Logger.getMessageLogger( + MethodHandles.lookup(), + SequenceGeneratorLogger.class, + NAME + ); + + @LogMessage(level = INFO) + @Message(value = "Forcing table use for sequence-style generator due to pooled optimizer selection where db does not support pooled sequences", + id = 90201) + void forcingTableUse(); + + @LogMessage(level = WARN) + @Message(value = "The increment size of the sequence '%s' is set to [%d] in the entity mapping while the associated database sequence increment size is [%d]" + + " - the database sequence increment size will take precedence to avoid identifier allocation conflicts.", + id = 90202) + void sequenceIncrementSizeMismatch(String sequenceName, int incrementSize, int databaseIncrementSize); + + @LogMessage(level = WARN) + @Message(value = "Sequence-style generator configuration specified explicit optimizer [%s], but [%s=%s]; using optimizer [%s] increment default of [%s]", + id = 90203) + void honoringOptimizerSetting( + String none, + String incrementParam, + int incrementSize, + String positiveOrNegative, + int defaultIncrementSize); + +} diff --git a/hibernate-core/src/main/java/org/hibernate/id/enhanced/SequenceStructure.java b/hibernate-core/src/main/java/org/hibernate/id/enhanced/SequenceStructure.java index a16536644ee8..f5adf7ed49ba 100644 --- a/hibernate-core/src/main/java/org/hibernate/id/enhanced/SequenceStructure.java +++ b/hibernate-core/src/main/java/org/hibernate/id/enhanced/SequenceStructure.java @@ -4,7 +4,6 @@ */ package org.hibernate.id.enhanced; -import java.lang.invoke.MethodHandles; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; @@ -18,10 +17,8 @@ import org.hibernate.engine.jdbc.spi.JdbcCoordinator; import org.hibernate.engine.spi.SharedSessionContractImplementor; import org.hibernate.id.IntegralDataTypeHolder; -import org.hibernate.internal.CoreMessageLogger; - -import org.jboss.logging.Logger; +import static org.hibernate.engine.jdbc.JdbcLogging.JDBC_MESSAGE_LOGGER; import static org.hibernate.id.IdentifierGeneratorHelper.getIntegralDataTypeHolder; /** @@ -30,11 +27,6 @@ * @author Steve Ebersole */ public class SequenceStructure implements DatabaseStructure { - private static final CoreMessageLogger LOG = Logger.getMessageLogger( - MethodHandles.lookup(), - CoreMessageLogger.class, - SequenceStructure.class.getName() - ); private final String contributor; private final QualifiedName logicalQualifiedSequenceName; @@ -123,8 +115,8 @@ public IntegralDataTypeHolder getNextValue() { rs.next(); final IntegralDataTypeHolder value = getIntegralDataTypeHolder( numberType ); value.initialize( rs, 1 ); - if ( LOG.isTraceEnabled() ) { - LOG.tracef( "Sequence value obtained: %s", value.makeValue() ); + if ( JDBC_MESSAGE_LOGGER.isTraceEnabled() ) { + JDBC_MESSAGE_LOGGER.sequenceValueRetrievedFromDatabase( value.makeValue() ); } return value; } diff --git a/hibernate-core/src/main/java/org/hibernate/id/enhanced/SequenceStyleGenerator.java b/hibernate-core/src/main/java/org/hibernate/id/enhanced/SequenceStyleGenerator.java index 888be6735182..c2503b174d8e 100644 --- a/hibernate-core/src/main/java/org/hibernate/id/enhanced/SequenceStyleGenerator.java +++ b/hibernate-core/src/main/java/org/hibernate/id/enhanced/SequenceStyleGenerator.java @@ -4,7 +4,6 @@ */ package org.hibernate.id.enhanced; -import java.lang.invoke.MethodHandles; import java.util.Iterator; import java.util.Properties; import java.util.Set; @@ -30,20 +29,19 @@ import org.hibernate.id.IdentifierGenerator; import org.hibernate.id.PersistentIdentifierGenerator; import org.hibernate.id.SequenceMismatchStrategy; -import org.hibernate.internal.CoreMessageLogger; import org.hibernate.service.ServiceRegistry; import org.hibernate.tool.schema.Action; import org.hibernate.tool.schema.extract.spi.SequenceInformation; import org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.ActionGrouping; import org.hibernate.type.Type; -import org.jboss.logging.Logger; import jakarta.persistence.SequenceGenerator; import static java.util.Collections.singleton; import static org.hibernate.id.IdentifierGeneratorHelper.getNamingStrategy; import static org.hibernate.id.enhanced.OptimizerFactory.determineImplicitOptimizerName; +import static org.hibernate.id.enhanced.SequenceGeneratorLogger.SEQUENCE_GENERATOR_MESSAGE_LOGGER; import static org.hibernate.internal.util.StringHelper.isNotEmpty; import static org.hibernate.internal.util.config.ConfigurationHelper.getBoolean; import static org.hibernate.internal.util.config.ConfigurationHelper.getInt; @@ -114,13 +112,6 @@ public class SequenceStyleGenerator implements PersistentIdentifierGenerator, BulkInsertionCapableIdentifierGenerator, BeforeExecutionGenerator { - private static final CoreMessageLogger LOG = Logger.getMessageLogger( - MethodHandles.lookup(), - CoreMessageLogger.class, - SequenceStyleGenerator.class.getName() - ); - - // general purpose parameters ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /** @@ -228,7 +219,7 @@ public void configure(GeneratorCreationContext creationContext, Properties param && optimizationStrategy.isPooled() && !dialect.getSequenceSupport().supportsPooledSequences() ) { forceTableUse = true; - LOG.forcingTableUse(); + SEQUENCE_GENERATOR_MESSAGE_LOGGER.forcingTableUse(); } this.databaseStructure = buildDatabaseStructure( @@ -295,7 +286,7 @@ private int adjustIncrementSize( incrementSize = dbIncrementValue; case LOG: //TODO: the log message is correct for the case of FIX, but wrong for LOG - LOG.sequenceIncrementSizeMismatch( databaseSequenceName, incrementSize, dbIncrementValue ); + SEQUENCE_GENERATOR_MESSAGE_LOGGER.sequenceIncrementSizeMismatch( databaseSequenceName, incrementSize, dbIncrementValue ); break; } } @@ -434,7 +425,7 @@ protected OptimizerDescriptor determineOptimizationStrategy(Properties params, i protected int determineAdjustedIncrementSize(OptimizerDescriptor optimizationStrategy, int incrementSize) { if ( optimizationStrategy == StandardOptimizerDescriptor.NONE ) { if ( incrementSize < -1 ) { - LOG.honoringOptimizerSetting( + SEQUENCE_GENERATOR_MESSAGE_LOGGER.honoringOptimizerSetting( StandardOptimizerDescriptor.NONE.getExternalName(), INCREMENT_PARAM, incrementSize, @@ -444,7 +435,7 @@ protected int determineAdjustedIncrementSize(OptimizerDescriptor optimizationStr return -1; } else if ( incrementSize > 1 ) { - LOG.honoringOptimizerSetting( + SEQUENCE_GENERATOR_MESSAGE_LOGGER.honoringOptimizerSetting( StandardOptimizerDescriptor.NONE.getExternalName(), INCREMENT_PARAM, incrementSize, diff --git a/hibernate-core/src/main/java/org/hibernate/id/enhanced/TableGenerator.java b/hibernate-core/src/main/java/org/hibernate/id/enhanced/TableGenerator.java index 0d552a889409..68050153cd31 100644 --- a/hibernate-core/src/main/java/org/hibernate/id/enhanced/TableGenerator.java +++ b/hibernate-core/src/main/java/org/hibernate/id/enhanced/TableGenerator.java @@ -4,7 +4,6 @@ */ package org.hibernate.id.enhanced; -import java.lang.invoke.MethodHandles; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; @@ -41,7 +40,6 @@ import org.hibernate.id.IdentifierGeneratorHelper; import org.hibernate.id.IntegralDataTypeHolder; import org.hibernate.id.PersistentIdentifierGenerator; -import org.hibernate.internal.CoreMessageLogger; import org.hibernate.jdbc.AbstractReturningWork; import org.hibernate.mapping.Column; import org.hibernate.mapping.PrimaryKey; @@ -54,10 +52,10 @@ import org.hibernate.type.Type; import org.hibernate.type.descriptor.sql.spi.DdlTypeRegistry; -import org.jboss.logging.Logger; import static java.util.Collections.singletonMap; import static org.hibernate.boot.model.internal.GeneratorBinder.applyIfNotEmpty; +import static org.hibernate.id.enhanced.TableGeneratorLogger.TABLE_GENERATOR_MESSAGE_LOGGER; import static org.hibernate.id.IdentifierGeneratorHelper.getNamingStrategy; import static org.hibernate.id.enhanced.OptimizerFactory.determineImplicitOptimizerName; import static org.hibernate.internal.util.StringHelper.isEmpty; @@ -136,11 +134,6 @@ * @author Steve Ebersole */ public class TableGenerator implements PersistentIdentifierGenerator { - private static final CoreMessageLogger LOG = Logger.getMessageLogger( - MethodHandles.lookup(), - CoreMessageLogger.class, - TableGenerator.class.getName() - ); /** * By default, in the absence of a {@value #SEGMENT_VALUE_PARAM} setting, we use a single row for all @@ -468,7 +461,7 @@ protected String determineSegmentValue(Properties params) { protected String determineDefaultSegmentValue(Properties params) { final boolean preferSegmentPerEntity = getBoolean( CONFIG_PREFER_SEGMENT_PER_ENTITY, params ); final String defaultToUse = preferSegmentPerEntity ? params.getProperty( TABLE ) : DEF_SEGMENT_VALUE; - LOG.usingDefaultIdGeneratorSegmentValue( qualifiedTableName.render(), segmentColumnName, defaultToUse ); + TABLE_GENERATOR_MESSAGE_LOGGER.usingDefaultIdGeneratorSegmentValue( qualifiedTableName.render(), segmentColumnName, defaultToUse ); return defaultToUse; } @@ -567,7 +560,7 @@ private IntegralDataTypeHolder nextValue( final IntegralDataTypeHolder value = makeValue(); int rows; do { - + TABLE_GENERATOR_MESSAGE_LOGGER.retrievingCurrentValueForSegment( segmentValue ); try ( PreparedStatement selectPS = prepareStatement( connection, selectQuery, logger, listener, session ) ) { selectPS.setString( 1, segmentValue ); final ResultSet selectRS = executeQuery( selectPS, listener, selectQuery, session ); @@ -575,8 +568,8 @@ private IntegralDataTypeHolder nextValue( final long initializationValue = storeLastUsedValue ? initialValue - 1 : initialValue; value.initialize( initializationValue ); + TABLE_GENERATOR_MESSAGE_LOGGER.insertingInitialValueForSegment( value, segmentValue ); try ( PreparedStatement statement = prepareStatement( connection, insertQuery, logger, listener, session ) ) { - LOG.tracef( "binding parameter [%s] - [%s]", 1, segmentValue ); statement.setString( 1, segmentValue ); value.bind( statement, 2 ); executeUpdate( statement, listener, insertQuery, session); @@ -587,33 +580,34 @@ private IntegralDataTypeHolder nextValue( value.initialize( selectRS, defaultValue ); if ( selectRS.wasNull() ) { throw new HibernateException( - String.format( "%s for %s '%s' is null", valueColumnName, segmentColumnName, + String.format( "%s for %s '%s' is null", + valueColumnName, segmentColumnName, segmentValue ) ); } } selectRS.close(); } catch (SQLException e) { - LOG.unableToReadOrInitHiValue( e ); + TABLE_GENERATOR_MESSAGE_LOGGER.unableToReadOrInitializeHiValue( physicalTableName.render(), e ); throw e; } - + final IntegralDataTypeHolder updateValue = value.copy(); + if ( optimizer.applyIncrementSizeToSourceValues() ) { + updateValue.add( incrementSize ); + } + else { + updateValue.increment(); + } + TABLE_GENERATOR_MESSAGE_LOGGER.updatingCurrentValueForSegment( updateValue, segmentValue ); try ( PreparedStatement statement = prepareStatement( connection, updateQuery, logger, listener, session ) ) { - final IntegralDataTypeHolder updateValue = value.copy(); - if ( optimizer.applyIncrementSizeToSourceValues() ) { - updateValue.add( incrementSize ); - } - else { - updateValue.increment(); - } updateValue.bind( statement, 1 ); value.bind( statement, 2 ); statement.setString( 3, segmentValue ); rows = executeUpdate( statement, listener, updateQuery, session ); } catch (SQLException e) { - LOG.unableToUpdateQueryHiValue( physicalTableName.render(), e ); + TABLE_GENERATOR_MESSAGE_LOGGER.unableToUpdateHiValue( physicalTableName.render(), e ); throw e; } } diff --git a/hibernate-core/src/main/java/org/hibernate/id/enhanced/TableGeneratorLogger.java b/hibernate-core/src/main/java/org/hibernate/id/enhanced/TableGeneratorLogger.java new file mode 100644 index 000000000000..3da68ce6550f --- /dev/null +++ b/hibernate-core/src/main/java/org/hibernate/id/enhanced/TableGeneratorLogger.java @@ -0,0 +1,80 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * Copyright Red Hat Inc. and Hibernate Authors + */ +package org.hibernate.id.enhanced; + +import java.sql.SQLException; + +import org.hibernate.Internal; +import org.hibernate.internal.log.SubSystemLogging; + +import org.jboss.logging.BasicLogger; +import org.jboss.logging.Logger; +import org.jboss.logging.annotations.Cause; +import org.jboss.logging.annotations.LogMessage; +import org.jboss.logging.annotations.Message; +import org.jboss.logging.annotations.MessageLogger; +import org.jboss.logging.annotations.ValidIdRange; + +import java.lang.invoke.MethodHandles; + +import static org.jboss.logging.Logger.Level.ERROR; +import static org.jboss.logging.Logger.Level.INFO; +import static org.jboss.logging.Logger.Level.TRACE; + +/** + * Logging related to {@link TableGenerator} operations + * + * @author Gavin King + */ +@SubSystemLogging( + name = TableGeneratorLogger.NAME, + description = "Logging related to table-based identifier generation" +) +@MessageLogger(projectCode = "HHH") +@ValidIdRange(min = 90101, max = 90200) +@Internal +public interface TableGeneratorLogger extends BasicLogger { + String NAME = SubSystemLogging.BASE + ".id.table"; + + Logger TABLE_GENERATOR_LOGGER = Logger.getLogger(NAME); + TableGeneratorLogger TABLE_GENERATOR_MESSAGE_LOGGER = Logger.getMessageLogger( + MethodHandles.lookup(), + TableGeneratorLogger.class, + NAME + ); + + @LogMessage(level = ERROR) + @Message(value = "Could not read hi value in table: %s", id = 90101) + void unableToReadHiValue(String tableName, @Cause SQLException e); + + @LogMessage(level = ERROR) + @Message(value = "Could not read or initialize hi value in table: %s", id = 90102) + void unableToReadOrInitializeHiValue(String tableName, @Cause SQLException e); + + @LogMessage(level = ERROR) + @Message(value = "Could not update hi value in table: %s", id = 90103) + void unableToUpdateHiValue(String tableName, @Cause SQLException e); + + @LogMessage(level = INFO) + @Message(value = "Forcing table use for sequence-style generator due to pooled optimizer selection where db does not support pooled sequences", + id = 90107) + void forcingTableUse(); + + @LogMessage(level = INFO) + @Message(value = "Explicit segment value for id generator [%s.%s] suggested; using default [%s]", id = 90110) + void usingDefaultIdGeneratorSegmentValue(String tableName, String segmentColumnName, String defaultToUse); + + @LogMessage(level = TRACE) + @Message(value = "Retrieving current value for table generator segment '%s'", id = 90111) + void retrievingCurrentValueForSegment(String segmentValue); + + @LogMessage(level = TRACE) + @Message(value = "Inserting initial value '%s' for table generator segment '%s'", id = 90112) + void insertingInitialValueForSegment(Object value, String segmentValue); + + @LogMessage(level = TRACE) + @Message(value = "Updating current value to '%s' for table generator segment '%s'", id = 90113) + void updatingCurrentValueForSegment(Object updateValue, String segmentValue); +} diff --git a/hibernate-core/src/main/java/org/hibernate/id/enhanced/TableStructure.java b/hibernate-core/src/main/java/org/hibernate/id/enhanced/TableStructure.java index 9262722e452f..28262cb322aa 100644 --- a/hibernate-core/src/main/java/org/hibernate/id/enhanced/TableStructure.java +++ b/hibernate-core/src/main/java/org/hibernate/id/enhanced/TableStructure.java @@ -4,7 +4,6 @@ */ package org.hibernate.id.enhanced; -import java.lang.invoke.MethodHandles; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; @@ -28,7 +27,6 @@ import org.hibernate.mapping.Column; import org.hibernate.id.IdentifierGenerationException; import org.hibernate.id.IntegralDataTypeHolder; -import org.hibernate.internal.CoreMessageLogger; import org.hibernate.jdbc.AbstractReturningWork; import org.hibernate.mapping.Table; import org.hibernate.stat.spi.StatisticsImplementor; @@ -36,10 +34,10 @@ import org.hibernate.type.StandardBasicTypes; import org.hibernate.type.spi.TypeConfiguration; -import org.jboss.logging.Logger; import static org.hibernate.LockMode.PESSIMISTIC_WRITE; import static org.hibernate.id.IdentifierGeneratorHelper.getIntegralDataTypeHolder; +import static org.hibernate.id.enhanced.TableGeneratorLogger.TABLE_GENERATOR_MESSAGE_LOGGER; /** * Describes a table used to mimic sequence behavior @@ -47,11 +45,6 @@ * @author Steve Ebersole */ public class TableStructure implements DatabaseStructure { - private static final CoreMessageLogger LOG = Logger.getMessageLogger( - MethodHandles.lookup(), - CoreMessageLogger.class, - TableStructure.class.getName() - ); private final QualifiedName logicalQualifiedTableName; private final Identifier logicalValueColumnNameIdentifier; @@ -184,15 +177,15 @@ public IntegralDataTypeHolder execute(Connection connection) throws SQLException session ); if ( !selectRS.next() ) { - final String err = "could not read a hi value - you need to populate the table: " + physicalTableName; - LOG.error( err ); - throw new IdentifierGenerationException( err ); + throw new IdentifierGenerationException( + "Could not read a hi value, populate the table: " + + physicalTableName ); } value.initialize( selectRS, 1 ); selectRS.close(); } catch (SQLException sqle) { - LOG.error( "could not read a hi value", sqle ); + TABLE_GENERATOR_MESSAGE_LOGGER.unableToReadHiValue( physicalTableName.render(), sqle ); throw sqle; } @@ -211,7 +204,7 @@ public IntegralDataTypeHolder execute(Connection connection) throws SQLException rows = executeUpdate( updatePS, statsCollector, updateQuery, session ); } catch (SQLException e) { - LOG.unableToUpdateQueryHiValue( physicalTableName.render(), e ); + TABLE_GENERATOR_MESSAGE_LOGGER.unableToUpdateHiValue( physicalTableName.render(), e ); throw e; } } while ( rows == 0 ); diff --git a/hibernate-core/src/main/java/org/hibernate/internal/CoreMessageLogger.java b/hibernate-core/src/main/java/org/hibernate/internal/CoreMessageLogger.java index aa2349eb529b..967621034af7 100644 --- a/hibernate-core/src/main/java/org/hibernate/internal/CoreMessageLogger.java +++ b/hibernate-core/src/main/java/org/hibernate/internal/CoreMessageLogger.java @@ -146,11 +146,6 @@ void expectedType(String name, + " to unsafe use of the session): %s", id = 99) void failed(Throwable throwable); - @LogMessage(level = INFO) - @Message(value = "Forcing table use for sequence-style generator due to pooled optimizer selection where db does not support pooled sequences", - id = 107) - void forcingTableUse(); - @LogMessage(level = WARN) @Message(value = "GUID identifier generated: %s", id = 113) void guidGenerated(String result); @@ -159,15 +154,6 @@ void expectedType(String name, @Message(value = "Handling transient entity in delete processing", id = 114) void handlingTransientEntity(); - @LogMessage(level = WARN) - @Message(value = "Config specified explicit optimizer of [%s], but [%s=%s]; using optimizer [%s] increment default of [%s].", id = 116) - void honoringOptimizerSetting( - String none, - String incrementParam, - int incrementSize, - String positiveOrNegative, - int defaultIncrementSize); - @LogMessage(level = DEBUG) @Message(value = "HQL: %s, time: %sms, rows: %s", id = 117) void hql(String hql, Long valueOf, Long valueOf2); @@ -420,18 +406,10 @@ void missingArguments( @Message(value = "Could not obtain connection to query JDBC database metadata", id = 342) void unableToObtainConnectionToQueryMetadata(@Cause Exception e); - @LogMessage(level = ERROR) - @Message(value = "Could not read or init a hi value", id = 351) - void unableToReadOrInitHiValue(@Cause SQLException e); - @LogMessage(level = ERROR) @Message(value = "Could not release a cache lock: %s", id = 353) void unableToReleaseCacheLock(CacheException ce); - @LogMessage(level = INFO) - @Message(value = "Unable to release isolated connection [%s]", id = 356) - void unableToReleaseIsolatedConnection(Throwable ignore); - @LogMessage(level = WARN) @Message(value = "Unable to release type info result set", id = 357) void unableToReleaseTypeInfoResultSet(); @@ -444,22 +422,10 @@ void missingArguments( @Message(value = "Unable to retrieve type info result set: %s", id = 362) void unableToRetrieveTypeInfoResultSet(String string); - @LogMessage(level = INFO) - @Message(value = "Unable to rollback connection on exception [%s]", id = 363) - void unableToRollbackConnection(Exception ignore); - - @LogMessage(level = INFO) - @Message(value = "Unable to rollback isolated transaction on error [%s]: [%s]", id = 364) - void unableToRollbackIsolatedTransaction(Exception e, Exception ignore); - @LogMessage(level = ERROR) @Message(value = "Error running schema update", id = 366) void unableToRunSchemaUpdate(@Cause Exception e); - @LogMessage(level = ERROR) - @Message(value = "Could not updateQuery hi value in: %s", id = 376) - void unableToUpdateQueryHiValue(String tableName, @Cause SQLException e); - @LogMessage(level = WARN) @Message(value = "I/O reported error writing cached file: %s: %s", id = 378) void unableToWriteCachedFile(String path, String message); @@ -469,10 +435,6 @@ void missingArguments( id = 393) void unsupportedMultiTableBulkHqlJpaql(int majorVersion, int minorVersion, int buildId); - @LogMessage(level = INFO) - @Message(value = "Explicit segment value for id generator [%s.%s] suggested; using default [%s]", id = 398) - void usingDefaultIdGeneratorSegmentValue(String tableName, String segmentColumnName, String defaultToUse); - @LogMessage(level = ERROR) @Message(value = "Don't use old DTDs, read the Hibernate 3.x Migration Guide", id = 404) void usingOldDtd(); @@ -630,10 +592,6 @@ void cannotResolveNonNullableTransientDependencies( @Message(value = "Detaching an uninitialized collection with queued operations from a session: %s", id = 496) void queuedOperationWhenDetachFromSession(String collectionInfoString); - @LogMessage(level = WARN) - @Message(value = "The increment size of the [%s] sequence is set to [%d] in the entity mapping while the associated database sequence increment size is [%d]. The database sequence increment size will take precedence to avoid identifier allocation conflicts.", id = 497) - void sequenceIncrementSizeMismatch(String sequenceName, int incrementSize, int databaseIncrementSize); - @LogMessage(level = DEBUG) @Message(value = "Detaching an uninitialized collection with queued operations from a session due to rollback: %s", id = 498) void queuedOperationWhenDetachFromSessionOnRollback(String collectionInfoString); diff --git a/hibernate-core/src/main/java/org/hibernate/resource/transaction/backend/jdbc/internal/JdbcIsolationDelegate.java b/hibernate-core/src/main/java/org/hibernate/resource/transaction/backend/jdbc/internal/JdbcIsolationDelegate.java index c06aedfa40e3..a9288850c531 100644 --- a/hibernate-core/src/main/java/org/hibernate/resource/transaction/backend/jdbc/internal/JdbcIsolationDelegate.java +++ b/hibernate-core/src/main/java/org/hibernate/resource/transaction/backend/jdbc/internal/JdbcIsolationDelegate.java @@ -13,17 +13,16 @@ import org.hibernate.engine.jdbc.spi.SqlExceptionHelper; import org.hibernate.resource.jdbc.spi.JdbcSessionOwner; import org.hibernate.resource.transaction.spi.IsolationDelegate; -import org.hibernate.internal.CoreLogging; -import org.hibernate.internal.CoreMessageLogger; import org.hibernate.jdbc.WorkExecutor; import org.hibernate.jdbc.WorkExecutorVisitable; import org.hibernate.resource.transaction.spi.TransactionCoordinatorOwner; +import static org.hibernate.engine.jdbc.JdbcLogging.JDBC_MESSAGE_LOGGER; + /** * @author Andrea Boriero */ public class JdbcIsolationDelegate implements IsolationDelegate { - private static final CoreMessageLogger log = CoreLogging.messageLogger( JdbcIsolationDelegate.class ); private final JdbcConnectionAccess connectionAccess; private final SqlExceptionHelper sqlExceptionHelper; @@ -77,11 +76,11 @@ public T delegateWork(WorkExecutorVisitable work, boolean transacted) thr } } catch ( Exception exception ) { - log.unableToRollbackConnection( exception ); + JDBC_MESSAGE_LOGGER.unableToRollBackIsolatedConnection( exception ); } if ( e instanceof HibernateException ) { - throw (HibernateException) e; + throw e; } else if ( e instanceof SQLException sqle ) { throw sqlExceptionHelper().convert( sqle, "Error performing isolated work" ); @@ -96,14 +95,14 @@ else if ( e instanceof SQLException sqle ) { connection.setAutoCommit( true ); } catch ( Exception ignore ) { - log.trace( "Unable to reset connection back to auto-commit" ); + JDBC_MESSAGE_LOGGER.unableToResetAutoCommit(); } } try { jdbcConnectionAccess().releaseConnection( connection ); } - catch ( Exception ignore ) { - log.unableToReleaseIsolatedConnection( ignore ); + catch ( Exception ignored ) { + JDBC_MESSAGE_LOGGER.unableToReleaseIsolatedConnection( ignored ); } } } diff --git a/hibernate-core/src/main/java/org/hibernate/resource/transaction/backend/jta/internal/JtaIsolationDelegate.java b/hibernate-core/src/main/java/org/hibernate/resource/transaction/backend/jta/internal/JtaIsolationDelegate.java index a225c5e0b394..cca98b50b978 100644 --- a/hibernate-core/src/main/java/org/hibernate/resource/transaction/backend/jta/internal/JtaIsolationDelegate.java +++ b/hibernate-core/src/main/java/org/hibernate/resource/transaction/backend/jta/internal/JtaIsolationDelegate.java @@ -182,6 +182,9 @@ private T doTheWork(WorkExecutorVisitable work) { // do the actual work return work.accept( new WorkExecutor<>(), connection ); } + catch (SQLException sqle) { + throw sqlExceptionConverter().apply( sqle, "Error performing isolated work" ); + } catch ( HibernateException e ) { throw e; } diff --git a/hibernate-core/src/main/java/org/hibernate/tool/schema/internal/DdlTransactionIsolatorProvidedConnectionImpl.java b/hibernate-core/src/main/java/org/hibernate/tool/schema/internal/DdlTransactionIsolatorProvidedConnectionImpl.java index 93c233b24273..c0cec224f5b4 100644 --- a/hibernate-core/src/main/java/org/hibernate/tool/schema/internal/DdlTransactionIsolatorProvidedConnectionImpl.java +++ b/hibernate-core/src/main/java/org/hibernate/tool/schema/internal/DdlTransactionIsolatorProvidedConnectionImpl.java @@ -8,13 +8,13 @@ import java.sql.SQLException; import org.hibernate.engine.jdbc.connections.spi.JdbcConnectionAccess; -import org.hibernate.internal.CoreLogging; -import org.hibernate.internal.CoreMessageLogger; import org.hibernate.resource.transaction.spi.DdlTransactionIsolator; import org.hibernate.tool.schema.internal.exec.JdbcConnectionAccessProvidedConnectionImpl; import org.hibernate.tool.schema.internal.exec.JdbcContext; import org.hibernate.tool.schema.spi.SchemaManagementException; +import static org.hibernate.engine.jdbc.JdbcLogging.JDBC_MESSAGE_LOGGER; + /** * Specialized DdlTransactionIsolator for cases where we have a user provided Connection * @@ -22,8 +22,6 @@ */ class DdlTransactionIsolatorProvidedConnectionImpl implements DdlTransactionIsolator { - private static final CoreMessageLogger LOG = CoreLogging.messageLogger( DdlTransactionIsolatorProvidedConnectionImpl.class ); - private final JdbcContext jdbcContext; public DdlTransactionIsolatorProvidedConnectionImpl(JdbcContext jdbcContext) { @@ -70,8 +68,8 @@ public void release() { // and we don't have access to it upon releasing via the DdlTransactionIsolatorProvidedConnectionImpl. connectionAccess.releaseConnection( null ); } - catch (SQLException ignore) { - LOG.unableToReleaseIsolatedConnection( ignore ); + catch (SQLException ignored) { + JDBC_MESSAGE_LOGGER.unableToReleaseIsolatedConnection( ignored ); } } } diff --git a/hibernate-core/src/test/java/org/hibernate/orm/test/id/hhh12973/PostgreSQLSequenceGeneratorWithSerialTest.java b/hibernate-core/src/test/java/org/hibernate/orm/test/id/hhh12973/PostgreSQLSequenceGeneratorWithSerialTest.java index a81a5d565a30..14e81b117fde 100644 --- a/hibernate-core/src/test/java/org/hibernate/orm/test/id/hhh12973/PostgreSQLSequenceGeneratorWithSerialTest.java +++ b/hibernate-core/src/test/java/org/hibernate/orm/test/id/hhh12973/PostgreSQLSequenceGeneratorWithSerialTest.java @@ -5,7 +5,6 @@ package org.hibernate.orm.test.id.hhh12973; import java.io.StringReader; -import java.lang.invoke.MethodHandles; import java.sql.Statement; import java.util.Map; import java.util.concurrent.atomic.AtomicLong; @@ -23,8 +22,6 @@ import org.hibernate.cfg.Configuration; import org.hibernate.dialect.PostgreSQLDialect; import org.hibernate.id.SequenceMismatchStrategy; -import org.hibernate.id.enhanced.SequenceStyleGenerator; -import org.hibernate.internal.CoreMessageLogger; import org.hibernate.testing.orm.junit.JiraKey; import org.hibernate.testing.orm.junit.EntityManagerFactoryBasedFunctionalTest; @@ -35,8 +32,8 @@ import org.junit.Rule; import org.junit.jupiter.api.Test; -import org.jboss.logging.Logger; +import static org.hibernate.id.enhanced.SequenceGeneratorLogger.SEQUENCE_GENERATOR_MESSAGE_LOGGER; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertTrue; @@ -49,14 +46,9 @@ public class PostgreSQLSequenceGeneratorWithSerialTest extends EntityManagerFactoryBasedFunctionalTest { @Rule - public LoggerInspectionRule logInspection = new LoggerInspectionRule( - Logger.getMessageLogger( - MethodHandles.lookup(), - CoreMessageLogger.class, - SequenceStyleGenerator.class.getName() - ) ); - - private Triggerable triggerable = logInspection.watchForLogMessages( "HHH000497:" ); + public LoggerInspectionRule logInspection = new LoggerInspectionRule( SEQUENCE_GENERATOR_MESSAGE_LOGGER ); + + private final Triggerable triggerable = logInspection.watchForLogMessages( "HHH090202:" ); @Override protected Class[] getAnnotatedClasses() { diff --git a/hibernate-core/src/test/java/org/hibernate/orm/test/id/hhh12973/SequenceMismatchStrategyFixWithSequenceGeneratorTest.java b/hibernate-core/src/test/java/org/hibernate/orm/test/id/hhh12973/SequenceMismatchStrategyFixWithSequenceGeneratorTest.java index b8401d7062c2..5b5fdda0f554 100644 --- a/hibernate-core/src/test/java/org/hibernate/orm/test/id/hhh12973/SequenceMismatchStrategyFixWithSequenceGeneratorTest.java +++ b/hibernate-core/src/test/java/org/hibernate/orm/test/id/hhh12973/SequenceMismatchStrategyFixWithSequenceGeneratorTest.java @@ -4,7 +4,6 @@ */ package org.hibernate.orm.test.id.hhh12973; -import java.lang.invoke.MethodHandles; import java.util.EnumSet; import java.util.Map; import java.util.concurrent.atomic.AtomicLong; @@ -19,8 +18,6 @@ import org.hibernate.boot.registry.StandardServiceRegistryBuilder; import org.hibernate.boot.spi.MetadataImplementor; import org.hibernate.cfg.AvailableSettings; -import org.hibernate.id.enhanced.SequenceStyleGenerator; -import org.hibernate.internal.CoreMessageLogger; import org.hibernate.service.ServiceRegistry; import org.hibernate.tool.hbm2ddl.SchemaExport; import org.hibernate.tool.schema.TargetType; @@ -36,8 +33,7 @@ import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.Test; -import org.jboss.logging.Logger; - +import static org.hibernate.id.enhanced.SequenceGeneratorLogger.SEQUENCE_GENERATOR_MESSAGE_LOGGER; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertTrue; @@ -50,15 +46,9 @@ public class SequenceMismatchStrategyFixWithSequenceGeneratorTest extends EntityManagerFactoryBasedFunctionalTest { @Rule - public LoggerInspectionRule logInspection = new LoggerInspectionRule( - Logger.getMessageLogger( - MethodHandles.lookup(), - CoreMessageLogger.class, - SequenceStyleGenerator.class.getName() - ) - ); - - private Triggerable triggerable = logInspection.watchForLogMessages( "HHH000497:" ); + public LoggerInspectionRule logInspection = new LoggerInspectionRule( SEQUENCE_GENERATOR_MESSAGE_LOGGER ); + + private final Triggerable triggerable = logInspection.watchForLogMessages( "HHH090202:" ); protected ServiceRegistry serviceRegistry; protected MetadataImplementor metadata; diff --git a/hibernate-core/src/test/java/org/hibernate/orm/test/id/hhh12973/SequenceMismatchStrategyLogTest.java b/hibernate-core/src/test/java/org/hibernate/orm/test/id/hhh12973/SequenceMismatchStrategyLogTest.java index 00dcb44f4f2d..02fba6a97d9b 100644 --- a/hibernate-core/src/test/java/org/hibernate/orm/test/id/hhh12973/SequenceMismatchStrategyLogTest.java +++ b/hibernate-core/src/test/java/org/hibernate/orm/test/id/hhh12973/SequenceMismatchStrategyLogTest.java @@ -4,7 +4,6 @@ */ package org.hibernate.orm.test.id.hhh12973; -import java.lang.invoke.MethodHandles; import java.util.EnumSet; import java.util.Map; import jakarta.persistence.Entity; @@ -18,8 +17,6 @@ import org.hibernate.boot.registry.StandardServiceRegistryBuilder; import org.hibernate.boot.spi.MetadataImplementor; import org.hibernate.cfg.AvailableSettings; -import org.hibernate.id.enhanced.SequenceStyleGenerator; -import org.hibernate.internal.CoreMessageLogger; import org.hibernate.service.ServiceRegistry; import org.hibernate.tool.hbm2ddl.SchemaExport; import org.hibernate.tool.schema.TargetType; @@ -35,8 +32,7 @@ import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.Test; -import org.jboss.logging.Logger; - +import static org.hibernate.id.enhanced.SequenceGeneratorLogger.SEQUENCE_GENERATOR_MESSAGE_LOGGER; import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertTrue; @@ -48,15 +44,9 @@ public class SequenceMismatchStrategyLogTest extends EntityManagerFactoryBasedFunctionalTest { @Rule - public LoggerInspectionRule logInspection = new LoggerInspectionRule( - Logger.getMessageLogger( - MethodHandles.lookup(), - CoreMessageLogger.class, - SequenceStyleGenerator.class.getName() - ) - ); - - private Triggerable triggerable = logInspection.watchForLogMessages( "HHH000497:" ); + public LoggerInspectionRule logInspection = new LoggerInspectionRule( SEQUENCE_GENERATOR_MESSAGE_LOGGER ); + + private final Triggerable triggerable = logInspection.watchForLogMessages( "HHH090202:" ); protected ServiceRegistry serviceRegistry; protected MetadataImplementor metadata; diff --git a/hibernate-core/src/test/java/org/hibernate/orm/test/id/sequence/NegativeValueSequenceTest.java b/hibernate-core/src/test/java/org/hibernate/orm/test/id/sequence/NegativeValueSequenceTest.java index cd42650c4a60..59f155d29517 100644 --- a/hibernate-core/src/test/java/org/hibernate/orm/test/id/sequence/NegativeValueSequenceTest.java +++ b/hibernate-core/src/test/java/org/hibernate/orm/test/id/sequence/NegativeValueSequenceTest.java @@ -20,7 +20,6 @@ import org.hibernate.id.enhanced.Optimizer; import org.hibernate.id.enhanced.PooledOptimizer; import org.hibernate.id.enhanced.SequenceStyleGenerator; -import org.hibernate.internal.CoreMessageLogger; import org.hibernate.service.spi.ServiceRegistryImplementor; import org.hibernate.testing.orm.junit.JiraKey; @@ -30,11 +29,11 @@ import org.junit.Rule; import org.junit.jupiter.api.Test; -import org.jboss.logging.Logger; -import java.lang.invoke.MethodHandles; +import static org.hibernate.id.enhanced.SequenceGeneratorLogger.SEQUENCE_GENERATOR_MESSAGE_LOGGER; import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertTrue; @@ -44,9 +43,7 @@ public class NegativeValueSequenceTest { @Rule - public LoggerInspectionRule logInspection = new LoggerInspectionRule( - Logger.getMessageLogger( MethodHandles.lookup(), CoreMessageLogger.class, SequenceStyleGenerator.class.getName() ) - ); + public LoggerInspectionRule logInspection = new LoggerInspectionRule( SEQUENCE_GENERATOR_MESSAGE_LOGGER ); @Test @JiraKey( value = "HHH-5933") @@ -59,14 +56,14 @@ public void testNegativeOneAllocationSizeNoopOptimizer() { .applySetting( AvailableSettings.HBM2DDL_AUTO, "create-drop" ) .build(); - Triggerable triggerable = logInspection.watchForLogMessages( "HHH000116" ); + Triggerable triggerable = logInspection.watchForLogMessages( "HHH090203" ); Metadata metadata = new MetadataSources( serviceRegistry ) .addAnnotatedClass( NegativeOneIncrementSize.class ) .buildMetadata(); // NegativeOneIncrementSize ID has allocationSize == -1, so warning should not be triggered. - assertEquals( false, triggerable.wasTriggered() ); + assertFalse( triggerable.wasTriggered() ); sessionFactory = (SessionFactoryImplementor) metadata.buildSessionFactory(); @@ -107,14 +104,14 @@ public void testNegativeTwoAllocationSizeNoopOptimizer() { .applySetting( AvailableSettings.HBM2DDL_AUTO, "create-drop" ) .build(); - Triggerable triggerable = logInspection.watchForLogMessages( "HHH000116" ); + Triggerable triggerable = logInspection.watchForLogMessages( "HHH090203" ); Metadata metadata = new MetadataSources( serviceRegistry ) .addAnnotatedClass( NegativeTwoIncrementSize.class ) .buildMetadata(); // NegativeTwoIncrementSize ID has allocationSize == -2, so warning should be triggered. - assertEquals( true, triggerable.wasTriggered() ); + assertTrue( triggerable.wasTriggered() ); sessionFactory = (SessionFactoryImplementor) metadata.buildSessionFactory(); @@ -156,14 +153,14 @@ public void testPositiveOneAllocationSizeNoopOptimizer() { .applySetting( AvailableSettings.HBM2DDL_AUTO, "create-drop" ) .build(); - Triggerable triggerable = logInspection.watchForLogMessages( "HHH000116" ); + Triggerable triggerable = logInspection.watchForLogMessages( "HHH090203" ); Metadata metadata = new MetadataSources( serviceRegistry ) .addAnnotatedClass( PositiveOneIncrementSize.class ) .buildMetadata(); // PositiveOneIncrementSize ID has allocationSize == 1, so warning should not be triggered. - assertEquals( false, triggerable.wasTriggered() ); + assertFalse( triggerable.wasTriggered() ); sessionFactory = (SessionFactoryImplementor) metadata.buildSessionFactory(); @@ -205,7 +202,7 @@ public void testPositiveTwoAllocationSizeNoopOptimizer() { .applySetting( AvailableSettings.HBM2DDL_AUTO, "create-drop" ) .build(); - Triggerable triggerable = logInspection.watchForLogMessages( "HHH000116" ); + Triggerable triggerable = logInspection.watchForLogMessages( "HHH090203" ); Metadata metadata = new MetadataSources( serviceRegistry ) .addAnnotatedClass( PositiveTwoIncrementSize.class ) @@ -213,7 +210,7 @@ public void testPositiveTwoAllocationSizeNoopOptimizer() { // NoopOptimizer is preferred (due to setting AvailableSettings.PREFERRED_POOLED_OPTIMIZER to "false") // PositiveTwoIncrementSize ID has allocationSize == 2, so warning should be triggered. - assertEquals( true, triggerable.wasTriggered() ); + assertTrue( triggerable.wasTriggered() ); sessionFactory = (SessionFactoryImplementor) metadata.buildSessionFactory(); @@ -255,7 +252,7 @@ public void testPositiveTwoAllocationSizePooledOptimizer() { .applySetting( AvailableSettings.HBM2DDL_AUTO, "create-drop" ) .build(); - Triggerable triggerable = logInspection.watchForLogMessages( "HHH000116" ); + Triggerable triggerable = logInspection.watchForLogMessages( "HHH090203" ); Metadata metadata = new MetadataSources( serviceRegistry ) .addAnnotatedClass( PositiveTwoIncrementSize.class ) @@ -263,7 +260,7 @@ public void testPositiveTwoAllocationSizePooledOptimizer() { // PositiveTwoIncrementSize ID has allocationSize == 2, so PooledOptimizer should be used. // Warning should not be triggered. - assertEquals( false, triggerable.wasTriggered() ); + assertFalse( triggerable.wasTriggered() ); sessionFactory = (SessionFactoryImplementor) metadata.buildSessionFactory(); @@ -305,14 +302,14 @@ public void testNegativeTwoAllocationSizePositiveStartNoopOptimizer() { .applySetting( AvailableSettings.HBM2DDL_AUTO, "create-drop" ) .build(); - Triggerable triggerable = logInspection.watchForLogMessages( "HHH000116" ); + Triggerable triggerable = logInspection.watchForLogMessages( "HHH090203" ); Metadata metadata = new MetadataSources( serviceRegistry ) .addAnnotatedClass( NegativeTwoIncrementSizePositiveInitialValue.class ) .buildMetadata(); // NegativeTwoIncrementSizePositiveInitialValue ID has allocationSize == -2, so warning should be triggered. - assertEquals( true, triggerable.wasTriggered() ); + assertTrue( triggerable.wasTriggered() ); sessionFactory = (SessionFactoryImplementor) metadata.buildSessionFactory(); diff --git a/hibernate-core/src/test/java/org/hibernate/orm/test/schematools/TestExtraPhysicalTableTypes.java b/hibernate-core/src/test/java/org/hibernate/orm/test/schematools/TestExtraPhysicalTableTypes.java index 37d5eb400835..b388828abb49 100644 --- a/hibernate-core/src/test/java/org/hibernate/orm/test/schematools/TestExtraPhysicalTableTypes.java +++ b/hibernate-core/src/test/java/org/hibernate/orm/test/schematools/TestExtraPhysicalTableTypes.java @@ -176,7 +176,7 @@ private void buildMetadata(String extraPhysicalTableTypes) { metadata.validate(); } - public class InformationExtractorJdbcDatabaseMetaDataImplTest extends InformationExtractorJdbcDatabaseMetaDataImpl { + public static class InformationExtractorJdbcDatabaseMetaDataImplTest extends InformationExtractorJdbcDatabaseMetaDataImpl { private final ExtractionContext extractionContext; @@ -194,7 +194,7 @@ public boolean isPhysicalTableType(String tableType) { } } - class DdlTransactionIsolatorImpl implements DdlTransactionIsolator{ + static class DdlTransactionIsolatorImpl implements DdlTransactionIsolator{ @Override public JdbcContext getJdbcContext() {