diff --git a/hibernate-core/src/main/java/org/hibernate/boot/internal/MetadataImpl.java b/hibernate-core/src/main/java/org/hibernate/boot/internal/MetadataImpl.java index 15dd36715c71..22389a3b558a 100644 --- a/hibernate-core/src/main/java/org/hibernate/boot/internal/MetadataImpl.java +++ b/hibernate-core/src/main/java/org/hibernate/boot/internal/MetadataImpl.java @@ -23,8 +23,6 @@ import org.hibernate.boot.model.relational.ColumnOrderingStrategy; import org.hibernate.boot.model.relational.ColumnOrderingStrategyLegacy; import org.hibernate.boot.model.relational.Database; -import org.hibernate.boot.model.relational.Namespace; -import org.hibernate.boot.model.relational.Sequence; import org.hibernate.boot.query.NamedHqlQueryDefinition; import org.hibernate.boot.query.NamedNativeQueryDefinition; import org.hibernate.boot.query.NamedProcedureCallDefinition; @@ -39,18 +37,13 @@ import org.hibernate.engine.config.spi.ConfigurationService; import org.hibernate.engine.spi.FilterDefinition; import org.hibernate.engine.spi.SessionFactoryImplementor; -import org.hibernate.event.service.spi.EventListenerGroup; import org.hibernate.event.service.spi.EventListenerRegistry; import org.hibernate.event.spi.EventType; import org.hibernate.mapping.Collection; -import org.hibernate.mapping.Column; import org.hibernate.mapping.Component; import org.hibernate.mapping.FetchProfile; -import org.hibernate.mapping.ForeignKey; import org.hibernate.mapping.MappedSuperclass; import org.hibernate.mapping.PersistentClass; -import org.hibernate.mapping.PrimaryKey; -import org.hibernate.mapping.Property; import org.hibernate.mapping.Table; import org.hibernate.mapping.UserDefinedObjectType; import org.hibernate.mapping.UserDefinedType; @@ -59,7 +52,6 @@ import org.hibernate.query.named.NamedObjectRepository; import org.hibernate.query.sqm.function.SqmFunctionDescriptor; import org.hibernate.query.sqm.function.SqmFunctionRegistry; -import org.hibernate.service.spi.ServiceRegistryImplementor; import org.hibernate.tool.schema.Action; import org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.ActionGrouping; import org.hibernate.type.spi.TypeConfiguration; @@ -331,28 +323,23 @@ public Map getSqlFunctionMap() { @Override public Set getContributors() { final HashSet contributors = new HashSet<>(); - - entityBindingMap.forEach( - (s, persistentClass) -> contributors.add( persistentClass.getContributor() ) - ); - - for ( Namespace namespace : database.getNamespaces() ) { - for ( Table table : namespace.getTables() ) { + entityBindingMap.forEach( (s, persistentClass) + -> contributors.add( persistentClass.getContributor() ) ); + for ( var namespace : database.getNamespaces() ) { + for ( var table : namespace.getTables() ) { contributors.add( table.getContributor() ); } - - for ( Sequence sequence : namespace.getSequences() ) { + for ( var sequence : namespace.getSequences() ) { contributors.add( sequence.getContributor() ); } } - return contributors; } @Override public java.util.Collection collectTableMappings() { - ArrayList
tables = new ArrayList<>(); - for ( Namespace namespace : database.getNamespaces() ) { + final ArrayList
tables = new ArrayList<>(); + for ( var namespace : database.getNamespaces() ) { tables.addAll( namespace.getTables() ); } return tables; @@ -370,19 +357,19 @@ public NamedObjectRepository buildNamedQueryRepository() { @Override public void orderColumns(boolean forceOrdering) { - final ColumnOrderingStrategy columnOrderingStrategy = metadataBuildingOptions.getColumnOrderingStrategy(); + final var columnOrderingStrategy = metadataBuildingOptions.getColumnOrderingStrategy(); // No need to order columns when using the no-op strategy if ( columnOrderingStrategy != ColumnOrderingStrategyLegacy.INSTANCE ) { final boolean shouldOrderTableColumns = forceOrdering || shouldOrderTableColumns(); - for ( Namespace namespace : database.getNamespaces() ) { + for ( var namespace : database.getNamespaces() ) { if ( shouldOrderTableColumns ) { - for ( Table table : namespace.getTables() ) { + for ( var table : namespace.getTables() ) { handleTable( table, columnOrderingStrategy ); handlePrimaryKey( table, columnOrderingStrategy ); handleForeignKeys( table, columnOrderingStrategy ); } } - for ( UserDefinedType userDefinedType : namespace.getUserDefinedTypes() ) { + for ( var userDefinedType : namespace.getUserDefinedTypes() ) { handleUDT( userDefinedType, columnOrderingStrategy ); } } @@ -390,7 +377,7 @@ public void orderColumns(boolean forceOrdering) { } private void handleTable(Table table, ColumnOrderingStrategy columnOrderingStrategy) { - final List tableColumns = columnOrderingStrategy.orderTableColumns( table, this ); + final var tableColumns = columnOrderingStrategy.orderTableColumns( table, this ); if ( tableColumns != null ) { table.reorderColumns( tableColumns ); } @@ -399,7 +386,7 @@ private void handleTable(Table table, ColumnOrderingStrategy columnOrderingStrat private void handleUDT(UserDefinedType userDefinedType, ColumnOrderingStrategy columnOrderingStrategy) { if ( userDefinedType instanceof UserDefinedObjectType objectType && objectType.getColumns().size() > 1 ) { - final List objectTypeColumns = + final var objectTypeColumns = columnOrderingStrategy.orderUserDefinedTypeColumns( objectType, this ); if ( objectTypeColumns != null ) { objectType.reorderColumns( objectTypeColumns ); @@ -408,16 +395,16 @@ private void handleUDT(UserDefinedType userDefinedType, ColumnOrderingStrategy c } private void handleForeignKeys(Table table, ColumnOrderingStrategy columnOrderingStrategy) { - for ( ForeignKey foreignKey : table.getForeignKeyCollection() ) { - final List columns = foreignKey.getColumns(); + for ( var foreignKey : table.getForeignKeyCollection() ) { + final var columns = foreignKey.getColumns(); if ( columns.size() > 1 ) { if ( foreignKey.getReferencedColumns().isEmpty() ) { - final PrimaryKey targetPrimaryKey = + final var targetPrimaryKey = foreignKey.getReferencedTable().getPrimaryKey(); // Make sure we order the columns of the primary key first, // so that foreign key ordering can rely on this if ( targetPrimaryKey.getOriginalOrder() == null ) { - final List primaryKeyColumns = + final var primaryKeyColumns = columnOrderingStrategy.orderConstraintColumns( targetPrimaryKey, this ); if ( primaryKeyColumns != null ) { targetPrimaryKey.reorderColumns( primaryKeyColumns ); @@ -427,7 +414,7 @@ private void handleForeignKeys(Table table, ColumnOrderingStrategy columnOrderin // Patch up the order of foreign keys based on new order of the target primary key final int[] originalPrimaryKeyOrder = targetPrimaryKey.getOriginalOrder(); if ( originalPrimaryKeyOrder != null ) { - final ArrayList foreignKeyColumnsCopy = new ArrayList<>( columns ); + final var foreignKeyColumnsCopy = new ArrayList<>( columns ); for ( int i = 0; i < foreignKeyColumnsCopy.size(); i++ ) { columns.set( i, foreignKeyColumnsCopy.get( originalPrimaryKeyOrder[i] ) ); } @@ -438,10 +425,11 @@ private void handleForeignKeys(Table table, ColumnOrderingStrategy columnOrderin } private void handlePrimaryKey(Table table, ColumnOrderingStrategy columnOrderingStrategy) { - final PrimaryKey primaryKey = table.getPrimaryKey(); - if ( primaryKey != null && primaryKey.getColumns() - .size() > 1 && primaryKey.getOriginalOrder() == null ) { - final List primaryKeyColumns = + final var primaryKey = table.getPrimaryKey(); + if ( primaryKey != null + && primaryKey.getColumns().size() > 1 + && primaryKey.getOriginalOrder() == null ) { + final var primaryKeyColumns = columnOrderingStrategy.orderConstraintColumns( primaryKey, this ); if ( primaryKeyColumns != null ) { primaryKey.reorderColumns( primaryKeyColumns ); @@ -454,9 +442,9 @@ private boolean shouldOrderTableColumns() { metadataBuildingOptions.getServiceRegistry() .requireService( ConfigurationService.class ) .getSettings(); - for ( ActionGrouping grouping : ActionGrouping.interpret( this, settings ) ) { - if ( isColumnOrderingRelevant( grouping.getScriptAction() ) - || isColumnOrderingRelevant( grouping.getDatabaseAction() ) ) { + for ( var grouping : ActionGrouping.interpret( this, settings ) ) { + if ( isColumnOrderingRelevant( grouping.scriptAction() ) + || isColumnOrderingRelevant( grouping.databaseAction() ) ) { return true; } } @@ -472,11 +460,11 @@ private static boolean isColumnOrderingRelevant(Action grouping) { @Override public void validate() throws MappingException { - for ( PersistentClass entityBinding : this.getEntityBindings() ) { + for ( var entityBinding : this.getEntityBindings() ) { entityBinding.validate( this ); } - for ( Collection collectionBinding : this.getCollectionBindings() ) { + for ( var collectionBinding : this.getCollectionBindings() ) { collectionBinding.validate( this ); } } @@ -491,15 +479,15 @@ public Set getMappedSuperclassMappingsCopy() { @Override public void initSessionFactory(SessionFactoryImplementor sessionFactory) { // must not use BootstrapContext services here - final ServiceRegistryImplementor registry = sessionFactory.getServiceRegistry(); + final var registry = sessionFactory.getServiceRegistry(); assert registry != null; - final ConfigurationService configurationService = registry.requireService( ConfigurationService.class ); - final ClassLoaderService classLoaderService = registry.requireService( ClassLoaderService.class ); - final EventListenerRegistry eventListenerRegistry = sessionFactory.getEventListenerRegistry(); + final var configurationService = registry.requireService( ConfigurationService.class ); + final var classLoaderService = registry.requireService( ClassLoaderService.class ); + final var eventListenerRegistry = sessionFactory.getEventListenerRegistry(); configurationService.getSettings().forEach( (propertyName, value) -> { if ( propertyName.startsWith( EVENT_LISTENER_PREFIX ) ) { final String eventTypeName = propertyName.substring( EVENT_LISTENER_PREFIX.length() + 1 ); - final EventType eventType = EventType.resolveEventTypeByName( eventTypeName ); + final var eventType = EventType.resolveEventTypeByName( eventTypeName ); final String listeners = (String) value; appendListeners( eventListenerRegistry, classLoaderService, listeners, eventType ); } @@ -511,7 +499,7 @@ private void appendListeners( ClassLoaderService classLoaderService, String listeners, EventType eventType) { - final EventListenerGroup eventListenerGroup = eventListenerRegistry.getEventListenerGroup( eventType ); + final var eventListenerGroup = eventListenerRegistry.getEventListenerGroup( eventType ); for ( String listenerImpl : splitAtCommas( listeners ) ) { @SuppressWarnings("unchecked") T listener = (T) instantiate( listenerImpl, classLoaderService ); @@ -551,36 +539,36 @@ public DiscriminatorType resolveEmbeddableDiscriminatorType( @Override public org.hibernate.type.Type getIdentifierType(String entityName) throws MappingException { - final PersistentClass pc = entityBindingMap.get( entityName ); - if ( pc == null ) { + final var persistentClass = entityBindingMap.get( entityName ); + if ( persistentClass == null ) { throw new MappingException( "Persistent class not known: " + entityName ); } - return pc.getIdentifier().getType(); + return persistentClass.getIdentifier().getType(); } @Override public String getIdentifierPropertyName(String entityName) throws MappingException { - final PersistentClass pc = entityBindingMap.get( entityName ); - if ( pc == null ) { + final var persistentClass = entityBindingMap.get( entityName ); + if ( persistentClass == null ) { throw new MappingException( "Persistent class not known: " + entityName ); } - if ( !pc.hasIdentifierProperty() ) { + if ( !persistentClass.hasIdentifierProperty() ) { return null; } - return pc.getIdentifierProperty().getName(); + return persistentClass.getIdentifierProperty().getName(); } @Override public org.hibernate.type.Type getReferencedPropertyType(String entityName, String propertyName) throws MappingException { - final PersistentClass pc = entityBindingMap.get( entityName ); - if ( pc == null ) { + final var persistentClass = entityBindingMap.get( entityName ); + if ( persistentClass == null ) { throw new MappingException( "Persistent class not known: " + entityName ); } - final Property prop = pc.getReferencedProperty( propertyName ); - if ( prop == null ) { + final var referencedProperty = persistentClass.getReferencedProperty( propertyName ); + if ( referencedProperty == null ) { throw new MappingException( "Property not known: " + entityName + '.' + propertyName ); } - return prop.getType(); + return referencedProperty.getType(); } //Specific for copies only: diff --git a/hibernate-core/src/main/java/org/hibernate/boot/model/source/internal/annotations/AnnotationMetadataSourceProcessorImpl.java b/hibernate-core/src/main/java/org/hibernate/boot/model/source/internal/annotations/AnnotationMetadataSourceProcessorImpl.java index 79ccc3381777..394b611393ec 100644 --- a/hibernate-core/src/main/java/org/hibernate/boot/model/source/internal/annotations/AnnotationMetadataSourceProcessorImpl.java +++ b/hibernate-core/src/main/java/org/hibernate/boot/model/source/internal/annotations/AnnotationMetadataSourceProcessorImpl.java @@ -263,8 +263,7 @@ private static void applyManagedClasses( DomainModelSource domainModelSource, LinkedHashSet knownClasses) { final var classDetailsRegistry = domainModelSource.getClassDetailsRegistry(); - domainModelSource.getManagedClassNames().forEach( (className) -> { - knownClasses.add( classDetailsRegistry.resolveClassDetails( className ) ); - } ); + domainModelSource.getManagedClassNames() + .forEach( className -> knownClasses.add( classDetailsRegistry.resolveClassDetails( className ) ) ); } } diff --git a/hibernate-core/src/main/java/org/hibernate/boot/model/source/internal/hbm/HbmMetadataSourceProcessorImpl.java b/hibernate-core/src/main/java/org/hibernate/boot/model/source/internal/hbm/HbmMetadataSourceProcessorImpl.java index 44fd697dc306..104cb63dc90e 100644 --- a/hibernate-core/src/main/java/org/hibernate/boot/model/source/internal/hbm/HbmMetadataSourceProcessorImpl.java +++ b/hibernate-core/src/main/java/org/hibernate/boot/model/source/internal/hbm/HbmMetadataSourceProcessorImpl.java @@ -41,13 +41,13 @@ public HbmMetadataSourceProcessorImpl( public HbmMetadataSourceProcessorImpl( Collection> xmlBindings, MetadataBuildingContext rootBuildingContext) { - final EntityHierarchyBuilder hierarchyBuilder = new EntityHierarchyBuilder(); + final var hierarchyBuilder = new EntityHierarchyBuilder(); mappingDocuments = new ArrayList<>(); for ( var xmlBinding : xmlBindings ) { if ( xmlBinding.getRoot() instanceof JaxbHbmHibernateMapping hibernateMapping ) { - final MappingDocument mappingDocument = new MappingDocument( + final var mappingDocument = new MappingDocument( "orm", hibernateMapping, xmlBinding.getOrigin(), @@ -64,56 +64,56 @@ public HbmMetadataSourceProcessorImpl( @Override public void prepare() { - for ( MappingDocument mappingDocument : mappingDocuments ) { + for ( var mappingDocument : mappingDocuments ) { mappingDocument.prepare(); } } @Override public void processTypeDefinitions() { - for ( MappingDocument mappingDocument : mappingDocuments ) { + for ( var mappingDocument : mappingDocuments ) { mappingDocument.processTypeDefinitions(); } } @Override public void processQueryRenames() { - for ( MappingDocument mappingDocument : mappingDocuments ) { + for ( var mappingDocument : mappingDocuments ) { mappingDocument.processQueryRenames(); } } @Override public void processNamedQueries() { - for ( MappingDocument mappingDocument : mappingDocuments ) { + for ( var mappingDocument : mappingDocuments ) { mappingDocument.processNamedQueries(); } } @Override public void processAuxiliaryDatabaseObjectDefinitions() { - for ( MappingDocument mappingDocument : mappingDocuments ) { + for ( var mappingDocument : mappingDocuments ) { mappingDocument.processAuxiliaryDatabaseObjectDefinitions(); } } @Override public void processFilterDefinitions() { - for ( MappingDocument mappingDocument : mappingDocuments ) { + for ( var mappingDocument : mappingDocuments ) { mappingDocument.processFilterDefinitions(); } } @Override public void processFetchProfiles() { - for ( MappingDocument mappingDocument : mappingDocuments ) { + for ( var mappingDocument : mappingDocuments ) { mappingDocument.processFetchProfiles(); } } @Override public void processIdentifierGenerators() { - for ( MappingDocument mappingDocument : mappingDocuments ) { + for ( var mappingDocument : mappingDocuments ) { mappingDocument.processIdentifierGenerators(); } } @@ -124,7 +124,7 @@ public void prepareForEntityHierarchyProcessing() { @Override public void processEntityHierarchies(Set processedEntityNames) { - hierarchy_loop : for ( EntityHierarchySourceImpl entityHierarchy : entityHierarchies ) { + hierarchy_loop : for ( var entityHierarchy : entityHierarchies ) { for ( String entityName : entityHierarchy.getContainedEntityNames() ) { if ( processedEntityNames.contains( entityName ) ) { if ( LOG.isDebugEnabled() ) { @@ -148,14 +148,14 @@ public void postProcessEntityHierarchies() {} @Override public void processResultSetMappings() { - for ( MappingDocument mappingDocument : mappingDocuments ) { + for ( var mappingDocument : mappingDocuments ) { mappingDocument.processResultSetMappings(); } } @Override public void finishUp() { - for ( MappingDocument mappingDocument : mappingDocuments ) { + for ( var mappingDocument : mappingDocuments ) { mappingDocument.finishUp(); } } diff --git a/hibernate-core/src/main/java/org/hibernate/boot/model/source/internal/hbm/MappingDocument.java b/hibernate-core/src/main/java/org/hibernate/boot/model/source/internal/hbm/MappingDocument.java index 3cb9938c2ae2..b5648d670957 100644 --- a/hibernate-core/src/main/java/org/hibernate/boot/model/source/internal/hbm/MappingDocument.java +++ b/hibernate-core/src/main/java/org/hibernate/boot/model/source/internal/hbm/MappingDocument.java @@ -8,15 +8,7 @@ import org.hibernate.boot.jaxb.Origin; import org.hibernate.boot.jaxb.hbm.spi.EntityInfo; -import org.hibernate.boot.jaxb.hbm.spi.JaxbHbmAuxiliaryDatabaseObjectType; -import org.hibernate.boot.jaxb.hbm.spi.JaxbHbmClassRenameType; -import org.hibernate.boot.jaxb.hbm.spi.JaxbHbmFetchProfileType; -import org.hibernate.boot.jaxb.hbm.spi.JaxbHbmFilterDefinitionType; import org.hibernate.boot.jaxb.hbm.spi.JaxbHbmHibernateMapping; -import org.hibernate.boot.jaxb.hbm.spi.JaxbHbmIdentifierGeneratorDefinitionType; -import org.hibernate.boot.jaxb.hbm.spi.JaxbHbmNamedNativeQueryType; -import org.hibernate.boot.jaxb.hbm.spi.JaxbHbmNamedQueryType; -import org.hibernate.boot.jaxb.hbm.spi.JaxbHbmTypeDefinitionType; import org.hibernate.boot.model.TypeDefinitionRegistry; import org.hibernate.boot.internal.TypeDefinitionRegistryStandardImpl; import org.hibernate.boot.model.naming.ObjectNameNormalizer; @@ -34,6 +26,8 @@ import org.jboss.logging.Logger; +import static org.hibernate.boot.model.source.internal.hbm.Helper.collectToolingHints; + /** * Aggregates together information about a mapping document. * @@ -77,9 +71,10 @@ public MappingDocument( .setPluralAttributesImplicitlyLazy( documentRoot.isDefaultLazy() ) .build(); - toolingHintContext = Helper.collectToolingHints( null, documentRoot ); + toolingHintContext = collectToolingHints( null, documentRoot ); - typeDefinitionRegistry = new TypeDefinitionRegistryStandardImpl( rootBuildingContext.getTypeDefinitionRegistry() ); + typeDefinitionRegistry = + new TypeDefinitionRegistryStandardImpl( rootBuildingContext.getTypeDefinitionRegistry() ); } public JaxbHbmHibernateMapping getDocumentRoot() { @@ -173,14 +168,14 @@ public void prepare() { @Override public void processTypeDefinitions() { - for ( JaxbHbmTypeDefinitionType typeDef : documentRoot.getTypedef() ) { + for ( var typeDef : documentRoot.getTypedef() ) { TypeDefinitionBinder.processTypeDefinition( this, typeDef ); } } @Override public void processQueryRenames() { - for ( JaxbHbmClassRenameType renameBinding : documentRoot.getImport() ) { + for ( var renameBinding : documentRoot.getImport() ) { final String name = qualifyClassName( renameBinding.getClazz() ); final String rename = renameBinding.getRename() == null ? StringHelper.unqualify( name ) @@ -192,38 +187,38 @@ public void processQueryRenames() { @Override public void processFilterDefinitions() { - for ( JaxbHbmFilterDefinitionType filterDefinitionBinding : documentRoot.getFilterDef() ) { + for ( var filterDefinitionBinding : documentRoot.getFilterDef() ) { FilterDefinitionBinder.processFilterDefinition( this, filterDefinitionBinding ); } } @Override public void processFetchProfiles() { - for ( JaxbHbmFetchProfileType fetchProfileBinding : documentRoot.getFetchProfile() ) { + for ( var fetchProfileBinding : documentRoot.getFetchProfile() ) { FetchProfileBinder.processFetchProfile( this, fetchProfileBinding ); } } @Override public void processAuxiliaryDatabaseObjectDefinitions() { - for ( JaxbHbmAuxiliaryDatabaseObjectType auxDbObjectBinding : documentRoot.getDatabaseObject() ) { + for ( var auxDbObjectBinding : documentRoot.getDatabaseObject() ) { AuxiliaryDatabaseObjectBinder.processAuxiliaryDatabaseObject( this, auxDbObjectBinding ); } } @Override public void processNamedQueries() { - for ( JaxbHbmNamedQueryType namedQuery : documentRoot.getQuery() ) { + for ( var namedQuery : documentRoot.getQuery() ) { NamedQueryBinder.processNamedQuery( this, namedQuery ); } - for ( JaxbHbmNamedNativeQueryType namedQuery : documentRoot.getSqlQuery() ) { + for ( var namedQuery : documentRoot.getSqlQuery() ) { NamedQueryBinder.processNamedNativeQuery( this, namedQuery ); } } @Override public void processIdentifierGenerators() { - for ( JaxbHbmIdentifierGeneratorDefinitionType identifierGenerator : documentRoot.getIdentifierGenerator() ) { + for ( var identifierGenerator : documentRoot.getIdentifierGenerator() ) { IdentifierGeneratorDefinitionBinder.processIdentifierGeneratorDefinition( this, identifierGenerator ); } } @@ -245,12 +240,10 @@ public void postProcessEntityHierarchies() { @Override public void processResultSetMappings() { - documentRoot.getResultset().forEach( - (hbmResultSetMapping) -> { - getMetadataCollector().addResultSetMapping( - new HbmResultSetMappingDescriptor( hbmResultSetMapping, rootBuildingContext ) ); - } - ); + documentRoot.getResultset() + .forEach( hbmResultSetMapping -> + getMetadataCollector().addResultSetMapping( + new HbmResultSetMappingDescriptor( hbmResultSetMapping, rootBuildingContext ) ) ); } @Override diff --git a/hibernate-core/src/main/java/org/hibernate/boot/model/source/internal/hbm/TypeDefinitionBinder.java b/hibernate-core/src/main/java/org/hibernate/boot/model/source/internal/hbm/TypeDefinitionBinder.java index f159dcdc8e62..d63edb9eac01 100644 --- a/hibernate-core/src/main/java/org/hibernate/boot/model/source/internal/hbm/TypeDefinitionBinder.java +++ b/hibernate-core/src/main/java/org/hibernate/boot/model/source/internal/hbm/TypeDefinitionBinder.java @@ -35,7 +35,7 @@ public static void processTypeDefinition( if ( LOG.isTraceEnabled() ) { LOG.tracef( - "Processed type-definition : %s -> %s", + "Processed type definition : %s -> %s", definition.getName(), definition.getTypeImplementorClass().getName() ); diff --git a/hibernate-core/src/main/java/org/hibernate/cfg/SchemaToolingSettings.java b/hibernate-core/src/main/java/org/hibernate/cfg/SchemaToolingSettings.java index b8becd4334ff..edad4f95f127 100644 --- a/hibernate-core/src/main/java/org/hibernate/cfg/SchemaToolingSettings.java +++ b/hibernate-core/src/main/java/org/hibernate/cfg/SchemaToolingSettings.java @@ -7,6 +7,7 @@ import org.hibernate.query.sqm.mutation.internal.temptable.GlobalTemporaryTableStrategy; import org.hibernate.query.sqm.mutation.internal.temptable.LocalTemporaryTableStrategy; import org.hibernate.query.sqm.mutation.internal.temptable.PersistentTableStrategy; +import org.hibernate.tool.schema.JdbcMetadataAccessStrategy; import org.hibernate.tool.schema.UniqueConstraintSchemaUpdateStrategy; /** @@ -244,12 +245,12 @@ public interface SchemaToolingSettings { /** * Setting to choose the strategy used to access the JDBC Metadata. *

- * Valid options are defined by {@link org.hibernate.tool.schema.JdbcMetadaAccessStrategy}. - * {@link org.hibernate.tool.schema.JdbcMetadaAccessStrategy#GROUPED} is the default. + * Valid options are defined by {@link JdbcMetadataAccessStrategy}. + * {@link JdbcMetadataAccessStrategy#GROUPED} is the default. * * @settingDefault Grouped, unless {@value #ENABLE_SYNONYMS} is enabled * - * @see org.hibernate.tool.schema.JdbcMetadaAccessStrategy + * @see JdbcMetadataAccessStrategy */ String HBM2DDL_JDBC_METADATA_EXTRACTOR_STRATEGY = "hibernate.hbm2ddl.jdbc_metadata_extraction_strategy"; diff --git a/hibernate-core/src/main/java/org/hibernate/engine/internal/NaturalIdLogging.java b/hibernate-core/src/main/java/org/hibernate/engine/internal/NaturalIdLogging.java index f81de3c9fb49..f6efdfc2e508 100644 --- a/hibernate-core/src/main/java/org/hibernate/engine/internal/NaturalIdLogging.java +++ b/hibernate-core/src/main/java/org/hibernate/engine/internal/NaturalIdLogging.java @@ -16,6 +16,7 @@ import java.lang.invoke.MethodHandles; +import static org.jboss.logging.Logger.Level.DEBUG; import static org.jboss.logging.Logger.Level.TRACE; /** @@ -32,8 +33,7 @@ @Internal public interface NaturalIdLogging extends BasicLogger { String LOGGER_NAME = SubSystemLogging.BASE + ".mapping.natural_id"; - Logger NATURAL_ID_LOGGER = Logger.getLogger( LOGGER_NAME ); - NaturalIdLogging NATURAL_ID_MESSAGE_LOGGER = Logger.getMessageLogger( + NaturalIdLogging NATURAL_ID_LOGGER = Logger.getMessageLogger( MethodHandles.lookup(), NaturalIdLogging.class, LOGGER_NAME @@ -62,4 +62,8 @@ public interface NaturalIdLogging extends BasicLogger { @LogMessage(level = TRACE) @Message(value = "Retrieving primary key of %s from database for natural id: %s", id = 90006) void retrievingIdForNaturalId(String entityName, Object naturalId); + + @LogMessage(level = DEBUG) + @Message(value = "Cached natural id resolution linked to missing entry in persistence context: %s", id = 90007) + void cachedResolutionMissingInContext(String info); } diff --git a/hibernate-core/src/main/java/org/hibernate/engine/internal/NaturalIdResolutionsImpl.java b/hibernate-core/src/main/java/org/hibernate/engine/internal/NaturalIdResolutionsImpl.java index a5cb9e2b9fd7..030fe2f42fb5 100644 --- a/hibernate-core/src/main/java/org/hibernate/engine/internal/NaturalIdResolutionsImpl.java +++ b/hibernate-core/src/main/java/org/hibernate/engine/internal/NaturalIdResolutionsImpl.java @@ -4,15 +4,6 @@ */ package org.hibernate.engine.internal; -import java.io.Serializable; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collection; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.concurrent.ConcurrentHashMap; - import org.hibernate.AssertionFailure; import org.hibernate.cache.spi.access.NaturalIdDataAccess; import org.hibernate.cache.spi.access.SoftLock; @@ -24,20 +15,24 @@ import org.hibernate.event.monitor.spi.EventMonitor; import org.hibernate.metamodel.mapping.EntityMappingType; import org.hibernate.persister.entity.EntityPersister; -import org.hibernate.sql.results.LoadingLogger; import org.hibernate.stat.internal.StatsHelper; -import org.jboss.logging.Logger; +import java.io.Serializable; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collection; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.concurrent.ConcurrentHashMap; import static java.util.Collections.emptyList; import static java.util.Collections.unmodifiableCollection; import static org.hibernate.engine.internal.CacheHelper.fromSharedCache; -import static org.hibernate.engine.internal.NaturalIdLogging.NATURAL_ID_MESSAGE_LOGGER; +import static org.hibernate.engine.internal.NaturalIdLogging.NATURAL_ID_LOGGER; public class NaturalIdResolutionsImpl implements NaturalIdResolutions, Serializable { - private static final Logger LOG = Logger.getLogger( NaturalIdResolutionsImpl.class ); - private final StatefulPersistenceContext persistenceContext; private final ConcurrentHashMap resolutionsByEntity = new ConcurrentHashMap<>(); @@ -46,7 +41,7 @@ public class NaturalIdResolutionsImpl implements NaturalIdResolutions, Serializa * * @param persistenceContext The persistence context that owns this delegate */ - public NaturalIdResolutionsImpl(StatefulPersistenceContext persistenceContext) { + NaturalIdResolutionsImpl(StatefulPersistenceContext persistenceContext) { this.persistenceContext = persistenceContext; } @@ -67,12 +62,13 @@ public boolean cacheResolution(Object id, Object naturalId, EntityMappingType en @Override public void cacheResolutionFromLoad(Object id, Object naturalId, EntityMappingType entityDescriptor) { - NATURAL_ID_MESSAGE_LOGGER.cachingNaturalIdResolutionFromLoad( - entityDescriptor.getEntityName(), - naturalId instanceof Object[] array ? Arrays.toString( array ) : naturalId, - id - ); - + if ( NATURAL_ID_LOGGER.isTraceEnabled() ) { + NATURAL_ID_LOGGER.cachingNaturalIdResolutionFromLoad( + entityDescriptor.getEntityName(), + naturalId instanceof Object[] array ? Arrays.toString( array ) : naturalId, + id + ); + } final var naturalIdMapping = entityDescriptor.getNaturalIdMapping(); if ( naturalIdMapping != null ) { // 'justAddedLocally' is meant to handle the case where we would get double stats journaling @@ -94,12 +90,13 @@ private boolean cacheResolutionLocally(Object id, Object naturalId, EntityMappin // by the time we get here, we assume that the natural id value has already been validated, so just assert assert entityDescriptor.getNaturalIdMapping() != null; assert isValidValue( naturalId, entityDescriptor ); - - NATURAL_ID_MESSAGE_LOGGER.locallyCachingNaturalIdResolution( - entityDescriptor.getEntityName(), - naturalId instanceof Object[] array ? Arrays.toString( array ) : naturalId, - id - ); + if ( NATURAL_ID_LOGGER.isTraceEnabled() ) { + NATURAL_ID_LOGGER.locallyCachingNaturalIdResolution( + entityDescriptor.getEntityName(), + naturalId instanceof Object[] array ? Arrays.toString( array ) : naturalId, + id + ); + } final var rootEntityDescriptor = entityDescriptor.getRootEntityDescriptor(); final var previousEntry = resolutionsByEntity.get( rootEntityDescriptor ); @@ -118,10 +115,8 @@ private boolean cacheResolutionLocally(Object id, Object naturalId, EntityMappin @Override public Object removeResolution(Object id, Object naturalId, EntityMappingType entityDescriptor) { final var persister = locatePersisterForKey( entityDescriptor.getEntityPersister() ); - // final NaturalIdMapping naturalIdMapping = persister.getNaturalIdMapping(); validateNaturalId( persister, naturalId ); - final var entityNaturalIdResolutionCache = resolutionsByEntity.get( persister ); Object sessionCachedNaturalIdValues = null; if ( entityNaturalIdResolutionCache != null ) { @@ -131,7 +126,6 @@ public Object removeResolution(Object id, Object naturalId, EntityMappingType en sessionCachedNaturalIdValues = cachedNaturalId.getNaturalIdValue(); } } - return sessionCachedNaturalIdValues; } @@ -152,11 +146,13 @@ public void manageLocalResolution( public Object removeLocalResolution(Object id, Object naturalId, EntityMappingType entityDescriptor) { final var naturalIdMapping = entityDescriptor.getNaturalIdMapping(); if ( naturalIdMapping != null ) { - NATURAL_ID_MESSAGE_LOGGER.removingLocallyCachedNaturalIdResolution( - entityDescriptor.getEntityName(), - naturalId instanceof Object[] array ? Arrays.toString( array ) : naturalId, - id - ); + if ( NATURAL_ID_LOGGER.isTraceEnabled() ) { + NATURAL_ID_LOGGER.removingLocallyCachedNaturalIdResolution( + entityDescriptor.getEntityName(), + naturalId instanceof Object[] array ? Arrays.toString( array ) : naturalId, + id + ); + } final var persister = locatePersisterForKey( entityDescriptor.getEntityPersister() ); final Object localNaturalIdValues = removeNaturalIdCrossReference( id, naturalId, persister ); @@ -269,9 +265,7 @@ private void manageSharedResolution( break; default: - if ( LOG.isDebugEnabled() ) { - LOG.debug( "Unexpected CachedNaturalIdValueSource [" + source + "]" ); - } + throw new AssertionFailure( "Unrecognized CachedNaturalIdValueSource: " + source ); } } } @@ -287,72 +281,69 @@ private void cacheFromUpdate( final Object previousCacheKey = cacheAccess.generateCacheKey( previousNaturalIdValues, rootEntityPersister, session ); - if ( cacheKey.equals( previousCacheKey ) ) { - // prevent identical re-caching, solves HHH-7309 - return; - } - - final SoftLock removalLock = cacheAccess.lockItem( session, previousCacheKey, null ); - cacheAccess.remove( session, previousCacheKey); - final SoftLock lock = cacheAccess.lockItem( session, cacheKey, null ); + if ( !cacheKey.equals( previousCacheKey ) ) { // prevent identical re-caching, solves HHH-7309 + final SoftLock removalLock = cacheAccess.lockItem( session, previousCacheKey, null ); + cacheAccess.remove( session, previousCacheKey ); + final SoftLock lock = cacheAccess.lockItem( session, cacheKey, null ); - final var statistics = session.getFactory().getStatistics(); - final var eventMonitor = session.getEventMonitor(); - boolean put = false; - final var cachePutEvent = eventMonitor.beginCachePutEvent(); - try { - put = cacheAccess.update( session, cacheKey, id ); - if ( put && statistics.isStatisticsEnabled() ) { - statistics.naturalIdCachePut( - rootEntityDescriptor.getNavigableRole(), - cacheAccess.getRegion().getName() + final var statistics = session.getFactory().getStatistics(); + final var eventMonitor = session.getEventMonitor(); + boolean put = false; + final var cachePutEvent = eventMonitor.beginCachePutEvent(); + try { + put = cacheAccess.update( session, cacheKey, id ); + if ( put && statistics.isStatisticsEnabled() ) { + statistics.naturalIdCachePut( + rootEntityDescriptor.getNavigableRole(), + cacheAccess.getRegion().getName() + ); + } + } + finally { + eventMonitor.completeCachePutEvent( + cachePutEvent, + session(), + cacheAccess, + rootEntityPersister, + put, + true, + EventMonitor.CacheActionDescription.ENTITY_UPDATE ); } - } - finally { - eventMonitor.completeCachePutEvent( - cachePutEvent, - session(), - cacheAccess, - rootEntityPersister, - put, - true, - EventMonitor.CacheActionDescription.ENTITY_UPDATE - ); - } - session.asEventSource().getActionQueue().registerCallback( - (success, sess) -> { - cacheAccess.unlockItem( sess, previousCacheKey, removalLock ); - if (success) { - boolean putAfterUpdate = false; - final var cachePutEventAfterUpdate = eventMonitor.beginCachePutEvent(); - try { - putAfterUpdate = cacheAccess.afterUpdate( sess, cacheKey, id, lock ); - if ( putAfterUpdate && statistics.isStatisticsEnabled() ) { - statistics.naturalIdCachePut( - rootEntityDescriptor.getNavigableRole(), - cacheAccess.getRegion().getName() + session.asEventSource().getActionQueue().registerCallback( + (success, sess) -> { + cacheAccess.unlockItem( sess, previousCacheKey, removalLock ); + if ( success ) { + boolean putAfterUpdate = false; + final var cachePutEventAfterUpdate = eventMonitor.beginCachePutEvent(); + try { + putAfterUpdate = cacheAccess.afterUpdate( sess, cacheKey, id, lock ); + if ( putAfterUpdate && statistics.isStatisticsEnabled() ) { + statistics.naturalIdCachePut( + rootEntityDescriptor.getNavigableRole(), + cacheAccess.getRegion().getName() + ); + } + } + finally { + eventMonitor.completeCachePutEvent( + cachePutEventAfterUpdate, + session(), + cacheAccess, + rootEntityPersister, + putAfterUpdate, + true, + EventMonitor.CacheActionDescription.ENTITY_AFTER_UPDATE ); } } - finally { - eventMonitor.completeCachePutEvent( - cachePutEventAfterUpdate, - session(), - cacheAccess, - rootEntityPersister, - putAfterUpdate, - true, - EventMonitor.CacheActionDescription.ENTITY_AFTER_UPDATE - ); + else { + cacheAccess.unlockItem( sess, cacheKey, lock ); } } - else { - cacheAccess.unlockItem( sess, cacheKey, lock ); - } - } - ); + ); + } } private void cacheFromInsert( @@ -414,36 +405,33 @@ private void cacheFromLoad( EntityMappingType rootEntityDescriptor, EntityPersister rootEntityPersister) { final var session = session(); - - if ( fromSharedCache( session, cacheKey, persister, cacheAccess ) != null ) { - // prevent identical re-caching - return; - } - - final var statistics = session.getFactory().getStatistics(); - final var eventMonitor = session.getEventMonitor(); - boolean put = false; - final var cachePutEvent = eventMonitor.beginCachePutEvent(); - try { - put = cacheAccess.putFromLoad( session, cacheKey, id, null ); - if ( put && statistics.isStatisticsEnabled() ) { - statistics.naturalIdCachePut( - rootEntityDescriptor.getNavigableRole(), - cacheAccess.getRegion().getName() + // prevent identical re-caching + if ( fromSharedCache( session, cacheKey, persister, cacheAccess ) == null ) { + final var statistics = session.getFactory().getStatistics(); + final var eventMonitor = session.getEventMonitor(); + boolean put = false; + final var cachePutEvent = eventMonitor.beginCachePutEvent(); + try { + put = cacheAccess.putFromLoad( session, cacheKey, id, null ); + if ( put && statistics.isStatisticsEnabled() ) { + statistics.naturalIdCachePut( + rootEntityDescriptor.getNavigableRole(), + cacheAccess.getRegion().getName() + ); + } + } + finally { + eventMonitor.completeCachePutEvent( + cachePutEvent, + session, + cacheAccess, + rootEntityPersister, + put, + true, + EventMonitor.CacheActionDescription.ENTITY_LOAD ); } } - finally { - eventMonitor.completeCachePutEvent( - cachePutEvent, - session, - cacheAccess, - rootEntityPersister, - put, - true, - EventMonitor.CacheActionDescription.ENTITY_LOAD - ); - } } @Override @@ -534,8 +522,8 @@ public boolean sameAsCached(EntityPersister persister, Object pk, Object natural } /** - * It is only valid to define natural ids at the root of an entity hierarchy. This method makes sure we are - * using the root persister. + * It is only valid to define natural ids at the root of an entity hierarchy. + * This method makes sure we are using the root persister. * * @param persister The persister representing the entity type. * @@ -546,7 +534,7 @@ protected EntityPersister locatePersisterForKey(EntityPersister persister) { } /** - * Invariant validate of the natural id. Checks include

    + * Invariant validate of the natural id. Checks include
      *
    • that the entity defines a natural id
    • *
    • the number of natural id values matches the expected number
    • *
    @@ -574,14 +562,6 @@ private boolean isValidValue(Object naturalIdValues, EntityMappingType entityDes @Override public Object findCachedNaturalIdById(Object id, EntityMappingType entityDescriptor) { - if ( LoadingLogger.TRACE_ENABLED ) { - LoadingLogger.LOGGER.tracef( - "Starting NaturalIdResolutionsImpl.#findCachedNaturalIdById( `%s`, `%s` )", - entityDescriptor.getEntityName(), - id - ); - } - final var persister = locatePersisterForKey( entityDescriptor.getEntityPersister() ); final var entityNaturalIdResolutionCache = resolutionsByEntity.get( persister ); if ( entityNaturalIdResolutionCache == null ) { @@ -595,34 +575,23 @@ public Object findCachedNaturalIdById(Object id, EntityMappingType entityDescrip @Override public Object findCachedIdByNaturalId(Object naturalId, EntityMappingType entityDescriptor) { - if ( LoadingLogger.TRACE_ENABLED ) { - LoadingLogger.LOGGER.tracef( - "Starting NaturalIdResolutionsImpl.#findCachedIdByNaturalId( `%s`, `%s` )", - entityDescriptor.getEntityName(), - naturalId - ); - } - final var persister = locatePersisterForKey( entityDescriptor.getEntityPersister() ); validateNaturalId( persister, naturalId ); - final var resolutionCache = resolutionsByEntity.get( persister ); - final Resolution cachedNaturalId = new ResolutionImpl( persister, naturalId, persistenceContext ); if ( resolutionCache != null ) { // Try the session cache final Object identifier = resolutionCache.naturalIdToPkMap.get( cachedNaturalId ); if ( identifier != null ) { // Found in session cache - if ( NATURAL_ID_MESSAGE_LOGGER.isTraceEnabled() ) { - NATURAL_ID_MESSAGE_LOGGER.resolvedNaturalIdInSessionCache( naturalId, identifier, + if ( NATURAL_ID_LOGGER.isTraceEnabled() ) { + NATURAL_ID_LOGGER.resolvedNaturalIdInSessionCache( naturalId, identifier, entityDescriptor.getEntityName() ); } return identifier; } - // if we did not find a hit, see if we know about these natural ids as invalid - if ( resolutionCache.containsInvalidNaturalIdReference( naturalId ) ) { + else if ( resolutionCache.containsInvalidNaturalIdReference( naturalId ) ) { return INVALID_NATURAL_ID_REFERENCE; } } @@ -647,9 +616,9 @@ public Object findCachedIdByNaturalId(Object naturalId, EntityMappingType entity cacheAccessStrategy.getRegion().getName() ); } - if ( NATURAL_ID_MESSAGE_LOGGER.isTraceEnabled() ) { + if ( NATURAL_ID_LOGGER.isTraceEnabled() ) { // protected to avoid Arrays.toString call unless needed - NATURAL_ID_MESSAGE_LOGGER.foundNaturalIdInSecondLevelCache( naturalId, id, + NATURAL_ID_LOGGER.foundNaturalIdInSecondLevelCache( naturalId, id, persister.getRootEntityName() ); } storeInResolutionCache( resolutionCache, persister, id, cachedNaturalId ); @@ -700,9 +669,9 @@ public Collection getCachedPkResolutions(EntityMappingType entityDescriptor) } /** - * As part of "load synchronization process", if a particular natural id is found to have changed we need to track - * its invalidity until after the next flush. This method lets the "load synchronization process" indicate - * when it has encountered such changes. + * As part of the "load synchronization process", if a particular natural id is found to have + * changed, we need to track its invalidity until after the next flush. This method lets the + * "load synchronization process" indicate when it has encountered such changes. * * @param persister The persister representing the entity type. * @param invalidNaturalIdValues The "old" natural id values. @@ -720,8 +689,9 @@ public void stashInvalidNaturalIdReference(EntityPersister persister, Object inv } /** - * Again, as part of "load synchronization process" we need to also be able to clear references to these - * known-invalid natural-ids after flush. This method exposes that capability. + * Again, as part of the "load synchronization process" we need to also be able to clear + * references to these known-invalid natural ids after the flush. This method exposes that + * capability. */ public void unStashInvalidNaturalIdReferences() { for ( var naturalIdResolutionCache : resolutionsByEntity.values() ) { @@ -782,7 +752,9 @@ public boolean cache(Object pk, Object naturalIdValues) { naturalIdToPkMap.remove( initial ); } - final var cachedNaturalId = new ResolutionImpl( getEntityDescriptor(), naturalIdValues, persistenceContext ); + final var cachedNaturalId = + new ResolutionImpl( getEntityDescriptor(), + naturalIdValues, persistenceContext ); pkToNaturalIdMap.put( pk, cachedNaturalId ); naturalIdToPkMap.put( cachedNaturalId, pk ); 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 b86e9f456bd9..cb932b22f9f2 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 @@ -322,7 +322,7 @@ private boolean isSchemaToBeRecreated(String contributor, ConfigurationService c configurationService.getSettings() ); // We know this will only contain at most 1 action final var iterator = actions.iterator(); - final var action = iterator.hasNext() ? iterator.next().getDatabaseAction() : null; + final var action = iterator.hasNext() ? iterator.next().databaseAction() : null; return action == Action.CREATE || action == Action.CREATE_DROP; } diff --git a/hibernate-core/src/main/java/org/hibernate/internal/NaturalIdHelper.java b/hibernate-core/src/main/java/org/hibernate/internal/NaturalIdHelper.java index 382fdce5508c..b607a9f59997 100644 --- a/hibernate-core/src/main/java/org/hibernate/internal/NaturalIdHelper.java +++ b/hibernate-core/src/main/java/org/hibernate/internal/NaturalIdHelper.java @@ -11,6 +11,7 @@ import org.hibernate.persister.entity.EntityPersister; import static org.hibernate.engine.internal.NaturalIdLogging.NATURAL_ID_LOGGER; +import static org.hibernate.pretty.MessageHelper.infoString; /** * @author Gavin King @@ -63,11 +64,8 @@ public static void performAnyNeededCrossReferenceSynchronizations( else { // no entry if ( loggerDebugEnabled ) { - NATURAL_ID_LOGGER.debugf( - "Cached natural-id/pk resolution linked to missing EntityEntry in persistence context: %s#%s", - entityMappingType.getEntityName(), - id - ); + NATURAL_ID_LOGGER.cachedResolutionMissingInContext( + infoString( entityMappingType.getEntityName(), id ) ); } } } diff --git a/hibernate-core/src/main/java/org/hibernate/loader/ast/internal/AbstractNaturalIdLoader.java b/hibernate-core/src/main/java/org/hibernate/loader/ast/internal/AbstractNaturalIdLoader.java index 48eb6d8e6cfc..bab3b5282121 100644 --- a/hibernate-core/src/main/java/org/hibernate/loader/ast/internal/AbstractNaturalIdLoader.java +++ b/hibernate-core/src/main/java/org/hibernate/loader/ast/internal/AbstractNaturalIdLoader.java @@ -56,7 +56,6 @@ import static java.util.Collections.emptyList; import static java.util.Collections.singletonList; import static org.hibernate.engine.internal.NaturalIdLogging.NATURAL_ID_LOGGER; -import static org.hibernate.engine.internal.NaturalIdLogging.NATURAL_ID_MESSAGE_LOGGER; /** * Base support for {@link NaturalIdLoader} implementations @@ -170,7 +169,7 @@ protected Expression resolveColumnReference( @Override public Object resolveNaturalIdToId(Object naturalIdValue, SharedSessionContractImplementor session) { if ( NATURAL_ID_LOGGER.isTraceEnabled() ) { - NATURAL_ID_MESSAGE_LOGGER.retrievingIdForNaturalId( + NATURAL_ID_LOGGER.retrievingIdForNaturalId( entityDescriptor.getEntityName(), naturalIdValue instanceof Object[] array ? Arrays.toString( array ) diff --git a/hibernate-core/src/main/java/org/hibernate/sql/results/LoadingLogger.java b/hibernate-core/src/main/java/org/hibernate/sql/results/LoadingLogger.java index 00d85f7faf7f..78e94bf6b6d0 100644 --- a/hibernate-core/src/main/java/org/hibernate/sql/results/LoadingLogger.java +++ b/hibernate-core/src/main/java/org/hibernate/sql/results/LoadingLogger.java @@ -31,7 +31,6 @@ public interface LoadingLogger extends BasicLogger { String LOGGER_NAME = ResultsLogger.LOGGER_NAME + ".loading"; - Logger LOGGER = Logger.getLogger( LOGGER_NAME ); LoadingLogger LOADING_LOGGER = Logger.getMessageLogger( MethodHandles.lookup(), LoadingLogger.class, LOGGER_NAME ); static String subLoggerName(String subName) { @@ -42,9 +41,6 @@ static Logger subLogger(String subName) { return Logger.getLogger( subLoggerName( subName ) ); } - boolean TRACE_ENABLED = LOGGER.isTraceEnabled(); - boolean DEBUG_ENABLED = LOGGER.isDebugEnabled(); - @LogMessage(level = DEBUG) @Message(id = 90005801, value = "Found matching entity in context, but it is scheduled for removal (returning null)") diff --git a/hibernate-core/src/main/java/org/hibernate/tool/schema/Action.java b/hibernate-core/src/main/java/org/hibernate/tool/schema/Action.java index 9ab645db8ab7..a5c2f0604ca5 100644 --- a/hibernate-core/src/main/java/org/hibernate/tool/schema/Action.java +++ b/hibernate-core/src/main/java/org/hibernate/tool/schema/Action.java @@ -4,7 +4,7 @@ */ package org.hibernate.tool.schema; -import static org.hibernate.cfg.AvailableSettings.HBM2DDL_AUTO; +import static org.hibernate.cfg.SchemaToolingSettings.HBM2DDL_AUTO; /** * Enumerates the actions that may be performed by the @@ -13,10 +13,10 @@ * several useful actions supported by Hibernate which are not covered by the JPA specification. *
      *
    • An action to be executed against the database may be specified using the configuration - * property {@value org.hibernate.cfg.AvailableSettings#JAKARTA_HBM2DDL_DATABASE_ACTION} - * or using the property {@value org.hibernate.cfg.AvailableSettings#HBM2DDL_AUTO}. + * property {@value org.hibernate.cfg.SchemaToolingSettings#JAKARTA_HBM2DDL_DATABASE_ACTION} + * or using the property {@value org.hibernate.cfg.SchemaToolingSettings#HBM2DDL_AUTO}. *
    • An action to be written to a script may be specified using the configuration property - * {@value org.hibernate.cfg.AvailableSettings#JAKARTA_HBM2DDL_SCRIPTS_ACTION}. + * {@value org.hibernate.cfg.SchemaToolingSettings#JAKARTA_HBM2DDL_SCRIPTS_ACTION}. *
    * * @apiNote There is an ambiguity surrounding the value {@code "create"} here. The old-school @@ -170,8 +170,8 @@ public enum Action { /** * The string configuration value identifying this action in JPA-standard configuration - * via {@value org.hibernate.cfg.AvailableSettings#JAKARTA_HBM2DDL_DATABASE_ACTION} - * or {@value org.hibernate.cfg.AvailableSettings#JAKARTA_HBM2DDL_SCRIPTS_ACTION}. + * via {@value org.hibernate.cfg.SchemaToolingSettings#JAKARTA_HBM2DDL_DATABASE_ACTION} + * or {@value org.hibernate.cfg.SchemaToolingSettings#JAKARTA_HBM2DDL_SCRIPTS_ACTION}. */ public String getExternalJpaName() { return switch ( this ) { @@ -185,7 +185,7 @@ public String getExternalJpaName() { /** * The string configuration value identifying this action in old-school Hibernate - * configuration via {@value org.hibernate.cfg.AvailableSettings#HBM2DDL_AUTO}. + * configuration via {@value org.hibernate.cfg.SchemaToolingSettings#HBM2DDL_AUTO}. */ public String getExternalHbm2ddlName() { return switch ( this ) { @@ -210,8 +210,8 @@ public String toString() { /** * Interpret the value of the JPA-standard configuration property - * {@value org.hibernate.cfg.AvailableSettings#JAKARTA_HBM2DDL_DATABASE_ACTION} - * or {@value org.hibernate.cfg.AvailableSettings#JAKARTA_HBM2DDL_SCRIPTS_ACTION} + * {@value org.hibernate.cfg.SchemaToolingSettings#JAKARTA_HBM2DDL_DATABASE_ACTION} + * or {@value org.hibernate.cfg.SchemaToolingSettings#JAKARTA_HBM2DDL_SCRIPTS_ACTION} * as an instance of {@link Action}. * * @param value The encountered config value @@ -236,7 +236,7 @@ public static Action interpretJpaSetting(Object value) { } // prefer JPA external names - for ( Action action : values() ) { + for ( var action : values() ) { final String jpaName = action.getExternalJpaName(); if ( jpaName != null && jpaName.equals( name ) ) { return action; @@ -244,7 +244,7 @@ public static Action interpretJpaSetting(Object value) { } // then check hbm2ddl names - for ( Action action : values() ) { + for ( var action : values() ) { final String hbm2ddlName = action.getExternalHbm2ddlName(); if ( hbm2ddlName != null && hbm2ddlName.equals( name ) ) { return action; @@ -252,7 +252,7 @@ public static Action interpretJpaSetting(Object value) { } // lastly, look at the enum name - for ( Action action : values() ) { + for ( var action : values() ) { if ( action.name().equals( name ) ) { return action; } @@ -263,8 +263,8 @@ public static Action interpretJpaSetting(Object value) { /** * Interpret the value of the old-school Hibernate configuration property - * {@value org.hibernate.cfg.AvailableSettings#HBM2DDL_AUTO} as an instance - * of {@link Action}. + * {@value org.hibernate.cfg.SchemaToolingSettings#HBM2DDL_AUTO} as an + * instance of {@link Action}. * * @param value The encountered config value * @@ -288,7 +288,7 @@ public static Action interpretHbm2ddlSetting(Object value) { } // prefer hbm2ddl names - for ( Action action : values() ) { + for ( var action : values() ) { final String hbm2ddlName = action.getExternalHbm2ddlName(); if ( hbm2ddlName != null && hbm2ddlName.equals( name ) ) { return action; @@ -296,7 +296,7 @@ public static Action interpretHbm2ddlSetting(Object value) { } // then check JPA external names - for ( Action action : values() ) { + for ( var action : values() ) { final String jpaName = action.getExternalJpaName(); if ( jpaName != null && jpaName.equals( name ) ) { return action; diff --git a/hibernate-core/src/main/java/org/hibernate/tool/schema/JdbcMetadaAccessStrategy.java b/hibernate-core/src/main/java/org/hibernate/tool/schema/JdbcMetadataAccessStrategy.java similarity index 76% rename from hibernate-core/src/main/java/org/hibernate/tool/schema/JdbcMetadaAccessStrategy.java rename to hibernate-core/src/main/java/org/hibernate/tool/schema/JdbcMetadataAccessStrategy.java index 0e9a79c5cefc..c2e1d5df91b3 100644 --- a/hibernate-core/src/main/java/org/hibernate/tool/schema/JdbcMetadaAccessStrategy.java +++ b/hibernate-core/src/main/java/org/hibernate/tool/schema/JdbcMetadataAccessStrategy.java @@ -7,17 +7,18 @@ import java.util.Locale; import java.util.Map; -import org.hibernate.cfg.AvailableSettings; -import org.hibernate.internal.util.config.ConfigurationHelper; +import org.hibernate.cfg.MappingSettings; +import static org.hibernate.cfg.SchemaToolingSettings.ENABLE_SYNONYMS; import static org.hibernate.cfg.SchemaToolingSettings.HBM2DDL_JDBC_METADATA_EXTRACTOR_STRATEGY; +import static org.hibernate.internal.util.config.ConfigurationHelper.getBoolean; /** * Determines how JDBC metadata is read by the schema management tooling. * * @author Andrea Boriero */ -public enum JdbcMetadaAccessStrategy { +public enum JdbcMetadataAccessStrategy { /** * The {@link org.hibernate.tool.schema.spi.SchemaMigrator} and {@link org.hibernate.tool.schema.spi.SchemaValidator} * execute one {@link java.sql.DatabaseMetaData#getTables(String, String, String, String[])} call for each @@ -31,8 +32,8 @@ public enum JdbcMetadaAccessStrategy { * all the database table in order to determine all the {@link jakarta.persistence.Entity} have a mapped database * tables. *

    - * This strategy is the default one, and it may require {@value AvailableSettings#DEFAULT_CATALOG} and/or - * {@value AvailableSettings#DEFAULT_SCHEMA} values to be provided. + * This strategy is the default one, and it may require {@value MappingSettings#DEFAULT_CATALOG} and/or + * {@value MappingSettings#DEFAULT_SCHEMA} values to be provided. */ GROUPED; @@ -41,11 +42,11 @@ public String toString() { return super.toString().toLowerCase(Locale.ROOT); } - public static JdbcMetadaAccessStrategy interpretSetting(Map options) { + public static JdbcMetadataAccessStrategy interpretSetting(Map options) { if ( options == null ) { return interpretHbm2ddlSetting( null ); } - else if ( ConfigurationHelper.getBoolean( AvailableSettings.ENABLE_SYNONYMS, options ) ) { + else if ( getBoolean( ENABLE_SYNONYMS, options ) ) { // Use of synonyms can cause issues during schema validation or schema update when GROUPED strategy is used (especially in Oracle) return INDIVIDUALLY; } @@ -54,7 +55,7 @@ else if ( ConfigurationHelper.getBoolean( AvailableSettings.ENABLE_SYNONYMS, opt } } - public static JdbcMetadaAccessStrategy interpretHbm2ddlSetting(Object value) { + public static JdbcMetadataAccessStrategy interpretHbm2ddlSetting(Object value) { if ( value == null ) { return GROUPED; } @@ -63,7 +64,7 @@ public static JdbcMetadaAccessStrategy interpretHbm2ddlSetting(Object value) { if ( name.isEmpty() ) { return GROUPED; } - for ( JdbcMetadaAccessStrategy strategy: values() ) { + for ( var strategy: values() ) { if ( strategy.toString().equalsIgnoreCase(name) ) { return strategy; } diff --git a/hibernate-core/src/main/java/org/hibernate/tool/schema/SourceType.java b/hibernate-core/src/main/java/org/hibernate/tool/schema/SourceType.java index 8fe4705129f1..34274048877c 100644 --- a/hibernate-core/src/main/java/org/hibernate/tool/schema/SourceType.java +++ b/hibernate-core/src/main/java/org/hibernate/tool/schema/SourceType.java @@ -4,14 +4,14 @@ */ package org.hibernate.tool.schema; -import org.hibernate.cfg.AvailableSettings; +import org.hibernate.cfg.SchemaToolingSettings; /** * Enumerates the various types of sources understood by the schema management * tooling. * - * @see AvailableSettings#JAKARTA_HBM2DDL_CREATE_SOURCE - * @see AvailableSettings#JAKARTA_HBM2DDL_DROP_SOURCE + * @see SchemaToolingSettings#JAKARTA_HBM2DDL_CREATE_SOURCE + * @see SchemaToolingSettings#JAKARTA_HBM2DDL_DROP_SOURCE * * @author Steve Ebersole */ @@ -27,13 +27,13 @@ public enum SourceType { * The scripts for schema creation and dropping come from different sources: *

      *
    • The creation DDL script is identified by the setting - * {@value AvailableSettings#JAKARTA_HBM2DDL_CREATE_SCRIPT_SOURCE}. + * {@value SchemaToolingSettings#JAKARTA_HBM2DDL_CREATE_SCRIPT_SOURCE}. *
    • The drop DDL script is identified by the setting - * {@value AvailableSettings#JAKARTA_HBM2DDL_DROP_SCRIPT_SOURCE}. + * {@value SchemaToolingSettings#JAKARTA_HBM2DDL_DROP_SCRIPT_SOURCE}. *
    * - * @see AvailableSettings#JAKARTA_HBM2DDL_CREATE_SCRIPT_SOURCE - * @see AvailableSettings#JAKARTA_HBM2DDL_DROP_SCRIPT_SOURCE + * @see SchemaToolingSettings#JAKARTA_HBM2DDL_CREATE_SCRIPT_SOURCE + * @see SchemaToolingSettings#JAKARTA_HBM2DDL_DROP_SCRIPT_SOURCE */ SCRIPT, /** diff --git a/hibernate-core/src/main/java/org/hibernate/tool/schema/internal/AbstractSchemaMigrator.java b/hibernate-core/src/main/java/org/hibernate/tool/schema/internal/AbstractSchemaMigrator.java index ed30ae399015..de45778d6de7 100644 --- a/hibernate-core/src/main/java/org/hibernate/tool/schema/internal/AbstractSchemaMigrator.java +++ b/hibernate-core/src/main/java/org/hibernate/tool/schema/internal/AbstractSchemaMigrator.java @@ -51,7 +51,7 @@ import org.jboss.logging.Logger; -import static org.hibernate.cfg.AvailableSettings.UNIQUE_CONSTRAINT_SCHEMA_UPDATE_STRATEGY; +import static org.hibernate.cfg.SchemaToolingSettings.UNIQUE_CONSTRAINT_SCHEMA_UPDATE_STRATEGY; import static org.hibernate.engine.config.spi.StandardConverters.STRING; import static org.hibernate.internal.util.StringHelper.isEmpty; import static org.hibernate.tool.schema.UniqueConstraintSchemaUpdateStrategy.DROP_RECREATE_QUIETLY; diff --git a/hibernate-core/src/main/java/org/hibernate/tool/schema/internal/AbstractSchemaPopulator.java b/hibernate-core/src/main/java/org/hibernate/tool/schema/internal/AbstractSchemaPopulator.java index 6f2659fd3240..cc12fe4897ff 100644 --- a/hibernate-core/src/main/java/org/hibernate/tool/schema/internal/AbstractSchemaPopulator.java +++ b/hibernate-core/src/main/java/org/hibernate/tool/schema/internal/AbstractSchemaPopulator.java @@ -90,7 +90,7 @@ private static Formatter getImportScriptFormatter(boolean format) { /** * Handles import scripts specified using - * {@link org.hibernate.cfg.AvailableSettings#HBM2DDL_IMPORT_FILES}. + * {@link org.hibernate.cfg.SchemaToolingSettings#HBM2DDL_IMPORT_FILES}. * * @return {@code true} if the legacy {@linkplain #DEFAULT_IMPORT_FILE default import file} * was one of the listed imported files that were executed @@ -130,7 +130,7 @@ private boolean containsDefaultImportFile(ScriptSourceInput importScriptInput,Ex /** * Handles import scripts specified using - * {@link org.hibernate.cfg.AvailableSettings#JAKARTA_HBM2DDL_LOAD_SCRIPT_SOURCE}. + * {@link org.hibernate.cfg.SchemaToolingSettings#JAKARTA_HBM2DDL_LOAD_SCRIPT_SOURCE}. */ private void applyImportFiles( ExecutionOptions options, @@ -175,14 +175,14 @@ private ScriptSourceInput interpretLegacyImportScriptSetting( } /** - * @see org.hibernate.cfg.AvailableSettings#HBM2DDL_CHARSET_NAME + * @see org.hibernate.cfg.SchemaToolingSettings#HBM2DDL_CHARSET_NAME */ private static String getCharsetName(ExecutionOptions options) { return (String) options.getConfigurationValues().get( HBM2DDL_CHARSET_NAME ); } /** - * @see org.hibernate.cfg.AvailableSettings#JAKARTA_HBM2DDL_LOAD_SCRIPT_SOURCE + * @see org.hibernate.cfg.SchemaToolingSettings#JAKARTA_HBM2DDL_LOAD_SCRIPT_SOURCE * * @return a {@link java.io.Reader} or a string URL */ diff --git a/hibernate-core/src/main/java/org/hibernate/tool/schema/internal/Helper.java b/hibernate-core/src/main/java/org/hibernate/tool/schema/internal/Helper.java index 98e7182f0671..e9788ca69447 100644 --- a/hibernate-core/src/main/java/org/hibernate/tool/schema/internal/Helper.java +++ b/hibernate-core/src/main/java/org/hibernate/tool/schema/internal/Helper.java @@ -16,12 +16,9 @@ import org.hibernate.boot.model.relational.SqlStringGenerationContext; import org.hibernate.boot.model.relational.internal.SqlStringGenerationContextImpl; import org.hibernate.boot.registry.classloading.spi.ClassLoaderService; -import org.hibernate.cfg.AvailableSettings; -import org.hibernate.cfg.SchemaToolingSettings; import org.hibernate.dialect.Dialect; import org.hibernate.engine.jdbc.env.spi.JdbcEnvironment; import org.hibernate.engine.jdbc.internal.Formatter; -import org.hibernate.internal.util.config.ConfigurationHelper; import org.hibernate.resource.transaction.spi.DdlTransactionIsolator; import org.hibernate.service.ServiceRegistry; import org.hibernate.tool.schema.extract.internal.DatabaseInformationImpl; @@ -42,9 +39,14 @@ import org.hibernate.tool.schema.spi.ScriptTargetOutput; import org.hibernate.tool.schema.spi.SqlScriptCommandExtractor; +import static org.hibernate.cfg.JdbcSettings.FORMAT_SQL; +import static org.hibernate.cfg.SchemaToolingSettings.HBM2DDL_CREATE_NAMESPACES; +import static org.hibernate.cfg.SchemaToolingSettings.HBM2DDL_CREATE_SCHEMAS; +import static org.hibernate.cfg.SchemaToolingSettings.JAKARTA_HBM2DDL_CREATE_SCHEMAS; import static org.hibernate.internal.CoreMessageLogger.CORE_LOGGER; import static org.hibernate.internal.util.StringHelper.isEmpty; import static org.hibernate.internal.util.StringHelper.splitAtCommas; +import static org.hibernate.internal.util.config.ConfigurationHelper.getBoolean; /** * Helper methods. @@ -125,16 +127,16 @@ else if ( scriptTargetSetting instanceof Writer writer ) { public static boolean interpretNamespaceHandling(Map configurationValues) { warnIfConflictingPropertiesSet( configurationValues ); // prefer the JPA setting... - return ConfigurationHelper.getBoolean( - SchemaToolingSettings.HBM2DDL_CREATE_SCHEMAS, + return getBoolean( + HBM2DDL_CREATE_SCHEMAS, configurationValues, //Then try the Jakarta JPA setting: - ConfigurationHelper.getBoolean( - SchemaToolingSettings.JAKARTA_HBM2DDL_CREATE_SCHEMAS, + getBoolean( + JAKARTA_HBM2DDL_CREATE_SCHEMAS, configurationValues, //Then try the Hibernate ORM setting: - ConfigurationHelper.getBoolean( - SchemaToolingSettings.HBM2DDL_CREATE_NAMESPACES, + getBoolean( + HBM2DDL_CREATE_NAMESPACES, configurationValues ) ) @@ -144,13 +146,13 @@ public static boolean interpretNamespaceHandling(Map configuratio private static void warnIfConflictingPropertiesSet(Map configurationValues) { //Print a warning if multiple conflicting properties are being set: int count = 0; - if ( configurationValues.containsKey( SchemaToolingSettings.HBM2DDL_CREATE_SCHEMAS ) ) { + if ( configurationValues.containsKey( HBM2DDL_CREATE_SCHEMAS ) ) { count++; } - if ( configurationValues.containsKey( SchemaToolingSettings.JAKARTA_HBM2DDL_CREATE_SCHEMAS ) ) { + if ( configurationValues.containsKey( JAKARTA_HBM2DDL_CREATE_SCHEMAS ) ) { count++; } - if ( configurationValues.containsKey( SchemaToolingSettings.HBM2DDL_CREATE_NAMESPACES ) ) { + if ( configurationValues.containsKey( HBM2DDL_CREATE_NAMESPACES ) ) { count++; } if ( count > 1 ) { @@ -159,7 +161,7 @@ private static void warnIfConflictingPropertiesSet(Map configura } public static boolean interpretFormattingEnabled(Map configurationValues) { - return ConfigurationHelper.getBoolean( AvailableSettings.FORMAT_SQL, configurationValues ); + return getBoolean( FORMAT_SQL, configurationValues ); } public static DatabaseInformation buildDatabaseInformation( @@ -211,7 +213,7 @@ public static void applySqlString( GenerationTarget... targets) { if ( !isEmpty( sqlString ) ) { final String sqlStringFormatted = formatter.format( sqlString ); - for ( GenerationTarget target : targets ) { + for ( var target : targets ) { try { target.accept( sqlStringFormatted ); } diff --git a/hibernate-core/src/main/java/org/hibernate/tool/schema/internal/HibernateSchemaManagementTool.java b/hibernate-core/src/main/java/org/hibernate/tool/schema/internal/HibernateSchemaManagementTool.java index a0da41b769cc..22aa22ff7d0a 100644 --- a/hibernate-core/src/main/java/org/hibernate/tool/schema/internal/HibernateSchemaManagementTool.java +++ b/hibernate-core/src/main/java/org/hibernate/tool/schema/internal/HibernateSchemaManagementTool.java @@ -4,9 +4,6 @@ */ package org.hibernate.tool.schema.internal; -import java.sql.Connection; -import java.util.Map; - import org.hibernate.boot.model.relational.SqlStringGenerationContext; import org.hibernate.boot.registry.selector.spi.StrategySelector; import org.hibernate.dialect.Dialect; @@ -17,18 +14,16 @@ import org.hibernate.engine.jdbc.spi.JdbcServices; import org.hibernate.engine.jdbc.spi.SqlExceptionHelper; import org.hibernate.engine.jdbc.spi.SqlStatementLogger; -import org.hibernate.internal.util.config.ConfigurationHelper; import org.hibernate.resource.transaction.spi.DdlTransactionIsolator; import org.hibernate.resource.transaction.spi.TransactionCoordinatorBuilder; import org.hibernate.service.ServiceRegistry; import org.hibernate.service.spi.ServiceRegistryAwareService; import org.hibernate.service.spi.ServiceRegistryImplementor; -import org.hibernate.tool.schema.JdbcMetadaAccessStrategy; +import org.hibernate.tool.schema.JdbcMetadataAccessStrategy; import org.hibernate.tool.schema.TargetType; import org.hibernate.tool.schema.extract.internal.InformationExtractorJdbcDatabaseMetaDataImpl; import org.hibernate.tool.schema.extract.spi.ExtractionContext; import org.hibernate.tool.schema.extract.spi.InformationExtractor; -import org.hibernate.tool.schema.spi.GenerationTarget; import org.hibernate.tool.schema.internal.exec.GenerationTargetToDatabase; import org.hibernate.tool.schema.internal.exec.GenerationTargetToScript; import org.hibernate.tool.schema.internal.exec.GenerationTargetToStdout; @@ -36,6 +31,7 @@ import org.hibernate.tool.schema.internal.exec.JdbcConnectionAccessProvidedConnectionImpl; import org.hibernate.tool.schema.internal.exec.JdbcContext; import org.hibernate.tool.schema.spi.ExtractionTool; +import org.hibernate.tool.schema.spi.GenerationTarget; import org.hibernate.tool.schema.spi.SchemaCreator; import org.hibernate.tool.schema.spi.SchemaDropper; import org.hibernate.tool.schema.spi.SchemaFilter; @@ -47,25 +43,28 @@ import org.hibernate.tool.schema.spi.SchemaTruncator; import org.hibernate.tool.schema.spi.SchemaValidator; import org.hibernate.tool.schema.spi.TargetDescriptor; - import org.jboss.logging.Logger; -import static org.hibernate.cfg.AvailableSettings.DIALECT_DB_MAJOR_VERSION; -import static org.hibernate.cfg.AvailableSettings.DIALECT_DB_MINOR_VERSION; -import static org.hibernate.cfg.AvailableSettings.DIALECT_DB_NAME; -import static org.hibernate.cfg.AvailableSettings.DIALECT_DB_VERSION; -import static org.hibernate.cfg.AvailableSettings.HBM2DDL_CONNECTION; -import static org.hibernate.cfg.AvailableSettings.HBM2DDL_DELIMITER; -import static org.hibernate.cfg.AvailableSettings.JAKARTA_HBM2DDL_CONNECTION; -import static org.hibernate.cfg.AvailableSettings.JAKARTA_HBM2DDL_DB_MAJOR_VERSION; -import static org.hibernate.cfg.AvailableSettings.JAKARTA_HBM2DDL_DB_MINOR_VERSION; -import static org.hibernate.cfg.AvailableSettings.JAKARTA_HBM2DDL_DB_NAME; -import static org.hibernate.cfg.AvailableSettings.JAKARTA_HBM2DDL_DB_VERSION; +import java.sql.Connection; +import java.util.Map; + +import static org.hibernate.cfg.JdbcSettings.DIALECT_DB_MAJOR_VERSION; +import static org.hibernate.cfg.JdbcSettings.DIALECT_DB_MINOR_VERSION; +import static org.hibernate.cfg.JdbcSettings.DIALECT_DB_NAME; +import static org.hibernate.cfg.JdbcSettings.DIALECT_DB_VERSION; +import static org.hibernate.cfg.JdbcSettings.HBM2DDL_CONNECTION; +import static org.hibernate.cfg.JdbcSettings.JAKARTA_HBM2DDL_CONNECTION; +import static org.hibernate.cfg.JdbcSettings.JAKARTA_HBM2DDL_DB_MAJOR_VERSION; +import static org.hibernate.cfg.JdbcSettings.JAKARTA_HBM2DDL_DB_MINOR_VERSION; +import static org.hibernate.cfg.JdbcSettings.JAKARTA_HBM2DDL_DB_NAME; +import static org.hibernate.cfg.JdbcSettings.JAKARTA_HBM2DDL_DB_VERSION; +import static org.hibernate.cfg.SchemaToolingSettings.HBM2DDL_DELIMITER; import static org.hibernate.cfg.SchemaToolingSettings.HBM2DDL_FILTER_PROVIDER; import static org.hibernate.internal.log.DeprecationLogger.DEPRECATION_LOGGER; import static org.hibernate.internal.util.NullnessHelper.coalesceSuppliedValues; import static org.hibernate.internal.util.StringHelper.isEmpty; import static org.hibernate.internal.util.StringHelper.isNotEmpty; +import static org.hibernate.internal.util.config.ConfigurationHelper.getString; /** * The standard Hibernate implementation of {@link SchemaManagementTool} @@ -110,7 +109,7 @@ public SchemaPopulator getSchemaPopulator(Map options) { @Override public SchemaMigrator getSchemaMigrator(Map options) { final SchemaFilter migrateFilter = getSchemaFilterProvider( options ).getMigrateFilter(); - return determineJdbcMetadaAccessStrategy( options ) == JdbcMetadaAccessStrategy.GROUPED + return determineJdbcMetadaAccessStrategy( options ) == JdbcMetadataAccessStrategy.GROUPED ? new GroupedSchemaMigratorImpl( this, migrateFilter ) : new IndividuallySchemaMigratorImpl( this, migrateFilter ); } @@ -118,7 +117,7 @@ public SchemaMigrator getSchemaMigrator(Map options) { @Override public SchemaValidator getSchemaValidator(Map options) { final SchemaFilter validateFilter = getSchemaFilterProvider( options ).getValidateFilter(); - return determineJdbcMetadaAccessStrategy( options ) == JdbcMetadaAccessStrategy.GROUPED + return determineJdbcMetadaAccessStrategy( options ) == JdbcMetadataAccessStrategy.GROUPED ? new GroupedSchemaValidatorImpl( this, validateFilter ) : new IndividuallySchemaValidatorImpl( this, validateFilter ); } @@ -130,8 +129,8 @@ private SchemaFilterProvider getSchemaFilterProvider(Map options) DefaultSchemaFilterProvider.INSTANCE ); } - private JdbcMetadaAccessStrategy determineJdbcMetadaAccessStrategy(Map options) { - return JdbcMetadaAccessStrategy.interpretSetting( options ); + private JdbcMetadataAccessStrategy determineJdbcMetadaAccessStrategy(Map options) { + return JdbcMetadataAccessStrategy.interpretSetting( options ); } @Override @@ -154,7 +153,7 @@ public GenerationTarget[] buildGenerationTargets( JdbcContext jdbcContext, Map options, boolean needsAutoCommit) { - final String scriptDelimiter = ConfigurationHelper.getString( HBM2DDL_DELIMITER, options, ";" ); + final String scriptDelimiter = getString( HBM2DDL_DELIMITER, options, ";" ); final GenerationTarget[] targets = new GenerationTarget[ targetDescriptor.getTargetTypes().size() ]; @@ -199,7 +198,7 @@ GenerationTarget[] buildGenerationTargets( TargetDescriptor targetDescriptor, DdlTransactionIsolator ddlTransactionIsolator, Map options) { - final String scriptDelimiter = ConfigurationHelper.getString( HBM2DDL_DELIMITER, options, ";" ); + final String scriptDelimiter = getString( HBM2DDL_DELIMITER, options, ";" ); final GenerationTarget[] targets = new GenerationTarget[ targetDescriptor.getTargetTypes().size() ]; @@ -237,7 +236,7 @@ public DdlTransactionIsolator getDdlTransactionIsolator(JdbcContext jdbcContext) } public JdbcContext resolveJdbcContext(Map configurationValues) { - final JdbcContextBuilder jdbcContextBuilder = new JdbcContextBuilder( serviceRegistry ); + final var jdbcContextBuilder = new JdbcContextBuilder( serviceRegistry ); // see if a specific connection has been provided final Connection providedConnection = (Connection) coalesceSuppliedValues( @@ -251,7 +250,8 @@ public JdbcContext resolveJdbcContext(Map configurationValues) { } ); if ( providedConnection != null ) { - jdbcContextBuilder.jdbcConnectionAccess = new JdbcConnectionAccessProvidedConnectionImpl( providedConnection ); + jdbcContextBuilder.jdbcConnectionAccess = + new JdbcConnectionAccessProvidedConnectionImpl( providedConnection ); } // see if a specific Dialect override has been provided through database name, version, etc diff --git a/hibernate-core/src/main/java/org/hibernate/tool/schema/internal/exec/AbstractScriptSourceInput.java b/hibernate-core/src/main/java/org/hibernate/tool/schema/internal/exec/AbstractScriptSourceInput.java index 84509f6ed137..314c289c62fd 100644 --- a/hibernate-core/src/main/java/org/hibernate/tool/schema/internal/exec/AbstractScriptSourceInput.java +++ b/hibernate-core/src/main/java/org/hibernate/tool/schema/internal/exec/AbstractScriptSourceInput.java @@ -23,8 +23,7 @@ public abstract class AbstractScriptSourceInput implements ScriptSourceInput { @Override public List extract(Function> extractor) { - final Reader inputReader = prepareReader(); - + final var inputReader = prepareReader(); try { return extractor.apply( inputReader ); } diff --git a/hibernate-core/src/main/java/org/hibernate/tool/schema/internal/exec/GenerationTargetToDatabase.java b/hibernate-core/src/main/java/org/hibernate/tool/schema/internal/exec/GenerationTargetToDatabase.java index 70c925f6a059..dbfd8e2e8e27 100644 --- a/hibernate-core/src/main/java/org/hibernate/tool/schema/internal/exec/GenerationTargetToDatabase.java +++ b/hibernate-core/src/main/java/org/hibernate/tool/schema/internal/exec/GenerationTargetToDatabase.java @@ -6,7 +6,6 @@ import java.sql.Connection; import java.sql.SQLException; -import java.sql.SQLWarning; import java.sql.Statement; import org.hibernate.engine.jdbc.internal.FormatStyle; @@ -72,20 +71,10 @@ public void beforeScript(ScriptSourceInput scriptSource) { @Override public void accept(String command) { getSqlStatementLogger().logStatement( command, FormatStyle.NONE.getFormatter() ); - try { final var statement = jdbcStatement(); statement.execute( command ); - - try { - SQLWarning warnings = statement.getWarnings(); - if ( warnings != null) { - getSqlExceptionHelper().logAndClearWarnings( statement ); - } - } - catch( SQLException e ) { - CORE_LOGGER.unableToLogSqlWarnings( e ); - } + logWarnings( statement ); } catch (SQLException e) { throw new CommandAcceptanceException( @@ -95,6 +84,18 @@ public void accept(String command) { } } + private void logWarnings(Statement statement) { + try { + final var warnings = statement.getWarnings(); + if ( warnings != null) { + getSqlExceptionHelper().logAndClearWarnings( statement ); + } + } + catch( SQLException e ) { + CORE_LOGGER.unableToLogSqlWarnings( e ); + } + } + /** * Strip repetition of the SQL statement from h2 messages. */ diff --git a/hibernate-core/src/main/java/org/hibernate/tool/schema/internal/exec/JdbcConnectionAccessConnectionProviderImpl.java b/hibernate-core/src/main/java/org/hibernate/tool/schema/internal/exec/JdbcConnectionAccessConnectionProviderImpl.java index 56a94103a756..d730659f5f36 100644 --- a/hibernate-core/src/main/java/org/hibernate/tool/schema/internal/exec/JdbcConnectionAccessConnectionProviderImpl.java +++ b/hibernate-core/src/main/java/org/hibernate/tool/schema/internal/exec/JdbcConnectionAccessConnectionProviderImpl.java @@ -27,7 +27,6 @@ public class JdbcConnectionAccessConnectionProviderImpl implements JdbcConnectio public JdbcConnectionAccessConnectionProviderImpl(ConnectionProvider connectionProvider) { this.connectionProvider = connectionProvider; - try { jdbcConnection = connectionProvider.getConnection(); } diff --git a/hibernate-core/src/main/java/org/hibernate/tool/schema/internal/exec/JdbcConnectionAccessProvidedConnectionImpl.java b/hibernate-core/src/main/java/org/hibernate/tool/schema/internal/exec/JdbcConnectionAccessProvidedConnectionImpl.java index dcdfa6ba9da1..aa8e27e60e12 100644 --- a/hibernate-core/src/main/java/org/hibernate/tool/schema/internal/exec/JdbcConnectionAccessProvidedConnectionImpl.java +++ b/hibernate-core/src/main/java/org/hibernate/tool/schema/internal/exec/JdbcConnectionAccessProvidedConnectionImpl.java @@ -25,10 +25,13 @@ public class JdbcConnectionAccessProvidedConnectionImpl implements JdbcConnectio public JdbcConnectionAccessProvidedConnectionImpl(Connection jdbcConnection) { this.jdbcConnection = jdbcConnection; + wasInitiallyAutoCommit = enableAutoCommit( jdbcConnection ); + JDBC_LOGGER.initialAutoCommit( wasInitiallyAutoCommit ); + } - boolean wasInitiallyAutoCommit; + private static boolean enableAutoCommit(Connection jdbcConnection) { try { - wasInitiallyAutoCommit = jdbcConnection.getAutoCommit(); + final boolean wasInitiallyAutoCommit = jdbcConnection.getAutoCommit(); if ( !wasInitiallyAutoCommit ) { try { jdbcConnection.setAutoCommit( true ); @@ -44,13 +47,11 @@ public JdbcConnectionAccessProvidedConnectionImpl(Connection jdbcConnection) { ); } } + return wasInitiallyAutoCommit; } catch (SQLException ignore) { - wasInitiallyAutoCommit = false; + return false; } - - JDBC_LOGGER.initialAutoCommit( wasInitiallyAutoCommit ); - this.wasInitiallyAutoCommit = wasInitiallyAutoCommit; } @Override @@ -62,7 +63,6 @@ public Connection obtainConnection() throws SQLException { public void releaseConnection(Connection connection) throws SQLException { // NOTE: reset auto-commit, but *do not* close the Connection. // The application handed us this connection. - if ( !wasInitiallyAutoCommit ) { try { if ( jdbcConnection.getAutoCommit() ) { diff --git a/hibernate-core/src/main/java/org/hibernate/tool/schema/internal/exec/ScriptSourceInputFromFile.java b/hibernate-core/src/main/java/org/hibernate/tool/schema/internal/exec/ScriptSourceInputFromFile.java index 2807032bba7c..a3172cca1776 100644 --- a/hibernate-core/src/main/java/org/hibernate/tool/schema/internal/exec/ScriptSourceInputFromFile.java +++ b/hibernate-core/src/main/java/org/hibernate/tool/schema/internal/exec/ScriptSourceInputFromFile.java @@ -63,9 +63,10 @@ public void close() { } try { - return charsetName != null ? - new InputStreamReader( new FileInputStream(file), charsetName ) : - new InputStreamReader( new FileInputStream(file) ); + final var fileInputStream = new FileInputStream( file ); + return charsetName != null + ? new InputStreamReader( fileInputStream, charsetName ) + : new InputStreamReader( fileInputStream ); } catch (IOException e) { throw new SchemaManagementException( diff --git a/hibernate-core/src/main/java/org/hibernate/tool/schema/internal/exec/ScriptSourceInputFromUrl.java b/hibernate-core/src/main/java/org/hibernate/tool/schema/internal/exec/ScriptSourceInputFromUrl.java index 342547b758ee..bf9c3ff7a0cf 100644 --- a/hibernate-core/src/main/java/org/hibernate/tool/schema/internal/exec/ScriptSourceInputFromUrl.java +++ b/hibernate-core/src/main/java/org/hibernate/tool/schema/internal/exec/ScriptSourceInputFromUrl.java @@ -44,9 +44,10 @@ public String getScriptDescription() { @Override protected Reader prepareReader() { try { + final var stream = url.openStream(); return charsetName != null - ? new InputStreamReader( url.openStream(), charsetName ) - : new InputStreamReader( url.openStream() ); + ? new InputStreamReader( stream, charsetName ) + : new InputStreamReader( stream ); } catch (IOException e) { throw new SchemaManagementException( diff --git a/hibernate-core/src/main/java/org/hibernate/tool/schema/internal/exec/ScriptSourceInputNonExistentImpl.java b/hibernate-core/src/main/java/org/hibernate/tool/schema/internal/exec/ScriptSourceInputNonExistentImpl.java index b2a0efd9f997..8ab41eee45c8 100644 --- a/hibernate-core/src/main/java/org/hibernate/tool/schema/internal/exec/ScriptSourceInputNonExistentImpl.java +++ b/hibernate-core/src/main/java/org/hibernate/tool/schema/internal/exec/ScriptSourceInputNonExistentImpl.java @@ -33,7 +33,6 @@ protected Reader prepareReader() { @Override protected void releaseReader(Reader reader) { - } @Override diff --git a/hibernate-core/src/main/java/org/hibernate/tool/schema/internal/exec/ScriptTargetOutputToFile.java b/hibernate-core/src/main/java/org/hibernate/tool/schema/internal/exec/ScriptTargetOutputToFile.java index 00d50d55faa0..8bc542d513f4 100644 --- a/hibernate-core/src/main/java/org/hibernate/tool/schema/internal/exec/ScriptTargetOutputToFile.java +++ b/hibernate-core/src/main/java/org/hibernate/tool/schema/internal/exec/ScriptTargetOutputToFile.java @@ -98,15 +98,10 @@ static Writer toFileWriter(File file, String charsetName, boolean append) { CORE_LOGGER.couldNotCreateScriptTarget( e ); } try { - return charsetName != null ? - new OutputStreamWriter( - new FileOutputStream( file, append ), - charsetName - ) : - new OutputStreamWriter( new FileOutputStream( - file, - append - ) ); + final var outputStream = new FileOutputStream( file, append ); + return charsetName != null + ? new OutputStreamWriter( outputStream, charsetName ) + : new OutputStreamWriter( outputStream ); } catch (IOException e) { throw new SchemaManagementException( "Unable to open specified script target file for writing : " + file, e ); diff --git a/hibernate-core/src/main/java/org/hibernate/tool/schema/spi/SchemaManagementToolCoordinator.java b/hibernate-core/src/main/java/org/hibernate/tool/schema/spi/SchemaManagementToolCoordinator.java index 08ccc4ab468b..65c891a354d2 100644 --- a/hibernate-core/src/main/java/org/hibernate/tool/schema/spi/SchemaManagementToolCoordinator.java +++ b/hibernate-core/src/main/java/org/hibernate/tool/schema/spi/SchemaManagementToolCoordinator.java @@ -8,48 +8,54 @@ import java.util.HashMap; import java.util.HashSet; import java.util.Map; -import java.util.Objects; import java.util.Set; import org.hibernate.Internal; import org.hibernate.boot.Metadata; import org.hibernate.boot.registry.classloading.spi.ClassLoaderService; -import org.hibernate.cfg.AvailableSettings; +import org.hibernate.cfg.SchemaToolingSettings; import org.hibernate.engine.config.spi.ConfigurationService; -import org.hibernate.engine.config.spi.StandardConverters; import org.hibernate.service.ServiceRegistry; import org.hibernate.tool.schema.Action; import org.hibernate.tool.schema.SourceType; import org.hibernate.tool.schema.TargetType; import org.hibernate.tool.schema.internal.ExceptionHandlerHaltImpl; import org.hibernate.tool.schema.internal.ExceptionHandlerLoggedImpl; -import org.hibernate.tool.schema.internal.Helper; import org.jboss.logging.Logger; -import static org.hibernate.cfg.AvailableSettings.HBM2DDL_AUTO; -import static org.hibernate.cfg.AvailableSettings.HBM2DDL_CREATE_SCRIPT_SOURCE; -import static org.hibernate.cfg.AvailableSettings.HBM2DDL_CREATE_SOURCE; -import static org.hibernate.cfg.AvailableSettings.HBM2DDL_DATABASE_ACTION; -import static org.hibernate.cfg.AvailableSettings.HBM2DDL_DROP_SCRIPT_SOURCE; -import static org.hibernate.cfg.AvailableSettings.HBM2DDL_DROP_SOURCE; -import static org.hibernate.cfg.AvailableSettings.HBM2DDL_SCRIPTS_ACTION; -import static org.hibernate.cfg.AvailableSettings.HBM2DDL_SCRIPTS_CREATE_TARGET; -import static org.hibernate.cfg.AvailableSettings.HBM2DDL_SCRIPTS_DROP_TARGET; -import static org.hibernate.cfg.AvailableSettings.JAKARTA_HBM2DDL_CREATE_SCRIPT_SOURCE; -import static org.hibernate.cfg.AvailableSettings.JAKARTA_HBM2DDL_CREATE_SOURCE; -import static org.hibernate.cfg.AvailableSettings.JAKARTA_HBM2DDL_DATABASE_ACTION; -import static org.hibernate.cfg.AvailableSettings.JAKARTA_HBM2DDL_DROP_SCRIPT_SOURCE; -import static org.hibernate.cfg.AvailableSettings.JAKARTA_HBM2DDL_DROP_SOURCE; -import static org.hibernate.cfg.AvailableSettings.JAKARTA_HBM2DDL_SCRIPTS_ACTION; -import static org.hibernate.cfg.AvailableSettings.JAKARTA_HBM2DDL_SCRIPTS_CREATE_TARGET; -import static org.hibernate.cfg.AvailableSettings.JAKARTA_HBM2DDL_SCRIPTS_DROP_TARGET; +import static org.hibernate.cfg.SchemaToolingSettings.HBM2DDL_AUTO; +import static org.hibernate.cfg.SchemaToolingSettings.HBM2DDL_CHARSET_NAME; +import static org.hibernate.cfg.SchemaToolingSettings.HBM2DDL_CREATE_SCRIPT_SOURCE; +import static org.hibernate.cfg.SchemaToolingSettings.HBM2DDL_CREATE_SOURCE; +import static org.hibernate.cfg.SchemaToolingSettings.HBM2DDL_DATABASE_ACTION; +import static org.hibernate.cfg.SchemaToolingSettings.HBM2DDL_DROP_SCRIPT_SOURCE; +import static org.hibernate.cfg.SchemaToolingSettings.HBM2DDL_DROP_SOURCE; +import static org.hibernate.cfg.SchemaToolingSettings.HBM2DDL_HALT_ON_ERROR; +import static org.hibernate.cfg.SchemaToolingSettings.HBM2DDL_SCRIPTS_ACTION; +import static org.hibernate.cfg.SchemaToolingSettings.HBM2DDL_SCRIPTS_CREATE_APPEND; +import static org.hibernate.cfg.SchemaToolingSettings.HBM2DDL_SCRIPTS_CREATE_TARGET; +import static org.hibernate.cfg.SchemaToolingSettings.HBM2DDL_SCRIPTS_DROP_TARGET; +import static org.hibernate.cfg.SchemaToolingSettings.JAKARTA_HBM2DDL_CREATE_SCRIPT_SOURCE; +import static org.hibernate.cfg.SchemaToolingSettings.JAKARTA_HBM2DDL_CREATE_SOURCE; +import static org.hibernate.cfg.SchemaToolingSettings.JAKARTA_HBM2DDL_DATABASE_ACTION; +import static org.hibernate.cfg.SchemaToolingSettings.JAKARTA_HBM2DDL_DROP_SCRIPT_SOURCE; +import static org.hibernate.cfg.SchemaToolingSettings.JAKARTA_HBM2DDL_DROP_SOURCE; +import static org.hibernate.cfg.SchemaToolingSettings.JAKARTA_HBM2DDL_SCRIPTS_ACTION; +import static org.hibernate.cfg.SchemaToolingSettings.JAKARTA_HBM2DDL_SCRIPTS_CREATE_TARGET; +import static org.hibernate.cfg.SchemaToolingSettings.JAKARTA_HBM2DDL_SCRIPTS_DROP_TARGET; +import static org.hibernate.engine.config.spi.StandardConverters.BOOLEAN; import static org.hibernate.internal.log.DeprecationLogger.DEPRECATION_LOGGER; +import static org.hibernate.tool.schema.Action.interpretHbm2ddlSetting; +import static org.hibernate.tool.schema.Action.interpretJpaSetting; +import static org.hibernate.tool.schema.internal.Helper.interpretNamespaceHandling; +import static org.hibernate.tool.schema.internal.Helper.interpretScriptSourceSetting; +import static org.hibernate.tool.schema.internal.Helper.interpretScriptTargetSetting; /** * Responsible for coordinating {@link SchemaManagementTool} execution - * whether from {@value AvailableSettings#HBM2DDL_AUTO}, JPA-standard - * {@value AvailableSettings#JAKARTA_HBM2DDL_DATABASE_ACTION}, or + * whether from {@value SchemaToolingSettings#HBM2DDL_AUTO}, JPA-standard + * {@value SchemaToolingSettings#JAKARTA_HBM2DDL_DATABASE_ACTION}, or * {@link org.hibernate.relational.SchemaManager}. *

    * The main entry point is {@link #process}. @@ -62,39 +68,66 @@ public class SchemaManagementToolCoordinator { public static void process( final Metadata metadata, final ServiceRegistry serviceRegistry, - final Map configurationValues, + final Map configuration, DelayedDropRegistry delayedDropRegistry) { - final Set groupings = ActionGrouping.interpret( metadata, configurationValues ); - + final Set groupings = ActionGrouping.interpret( metadata, configuration ); if ( groupings.isEmpty() ) { // no actions specified LOG.debug( "No schema management actions found" ); - return; } + else { + final var databaseActionMap = collectDatabaseActions( groupings ); + final var scriptActionMap = collectScriptActions( groupings ); - Map> databaseActionMap = null; - Map> scriptActionMap = null; + final var tool = serviceRegistry.getService( SchemaManagementTool.class ); + final var configService = serviceRegistry.requireService( ConfigurationService.class ); - for ( ActionGrouping grouping : groupings ) { - // for database action - if ( grouping.databaseAction != Action.NONE ) { - final Set contributors; - if ( databaseActionMap == null ) { - databaseActionMap = new HashMap<>(); - contributors = new HashSet<>(); - databaseActionMap.put( grouping.databaseAction, contributors ); - } - else { - contributors = databaseActionMap.computeIfAbsent( - grouping.databaseAction, - action -> new HashSet<>() + final boolean haltOnError = + configService.getSetting( HBM2DDL_HALT_ON_ERROR, BOOLEAN, false ); + + final var executionOptions = + buildExecutionOptions( configuration, + haltOnError + ? ExceptionHandlerHaltImpl.INSTANCE + : ExceptionHandlerLoggedImpl.INSTANCE ); + + if ( scriptActionMap != null ) { + scriptActionMap.forEach( (action, contributors) -> + performScriptAction( action, metadata, tool, serviceRegistry, executionOptions, configService ) ); + } + + if ( databaseActionMap != null ) { + databaseActionMap.forEach( (action, contributors) -> { + performDatabaseAction( + action, + metadata, + tool, + serviceRegistry, + executionOptions, + exportable -> contributors.contains( exportable.getContributor() ) ); - } - contributors.add( grouping.contributor ); + + if ( action == Action.CREATE_DROP ) { + delayedDropRegistry.registerOnCloseAction( + tool.getSchemaDropper( configuration ).buildDelayedAction( + metadata, + executionOptions, + exportable -> contributors.contains( exportable.getContributor() ), + buildDatabaseTargetDescriptor( configuration, + DropSettingSelector.INSTANCE, serviceRegistry ) + ) + ); + } + } ); } + } + } - // for script action + private static Map> collectScriptActions(Set groupings) { + Map> scriptActionMap = null; + for ( var grouping : groupings ) { if ( grouping.scriptAction != Action.NONE ) { + // for script action final Set contributors; if ( scriptActionMap == null ) { scriptActionMap = new HashMap<>(); @@ -110,61 +143,30 @@ public static void process( contributors.add( grouping.contributor ); } } + return scriptActionMap; + } - - final SchemaManagementTool tool = serviceRegistry.getService( SchemaManagementTool.class ); - final ConfigurationService configService = serviceRegistry.requireService( ConfigurationService.class ); - - final boolean haltOnError = configService.getSetting( - AvailableSettings.HBM2DDL_HALT_ON_ERROR, - StandardConverters.BOOLEAN, - false - ); - - final ExecutionOptions executionOptions = - buildExecutionOptions( configurationValues, - haltOnError - ? ExceptionHandlerHaltImpl.INSTANCE - : ExceptionHandlerLoggedImpl.INSTANCE ); - - if ( scriptActionMap != null ) { - scriptActionMap.forEach( - (action, contributors) -> { - performScriptAction( action, metadata, tool, serviceRegistry, executionOptions, configService ); - } - ); - } - - if ( databaseActionMap != null ) { - databaseActionMap.forEach( - (action, contributors) -> { - - performDatabaseAction( - action, - metadata, - tool, - serviceRegistry, - executionOptions, - (exportable) -> contributors.contains( exportable.getContributor() ) - ); - - if ( action == Action.CREATE_DROP ) { - delayedDropRegistry.registerOnCloseAction( - tool.getSchemaDropper( configurationValues ).buildDelayedAction( - metadata, - executionOptions, - (exportable) -> contributors.contains( exportable.getContributor() ), - buildDatabaseTargetDescriptor( - configurationValues, - DropSettingSelector.INSTANCE, - serviceRegistry - ) - ) - ); - } - } - ); + private static Map> collectDatabaseActions(Set groupings) { + Map> databaseActionMap = null; + for ( var grouping : groupings ) { + // for database action + if ( grouping.databaseAction != Action.NONE ) { + final Set contributors; + if ( databaseActionMap == null ) { + databaseActionMap = new HashMap<>(); + contributors = new HashSet<>(); + databaseActionMap.put( grouping.databaseAction, contributors ); + } + else { + contributors = databaseActionMap.computeIfAbsent( + grouping.databaseAction, + action -> new HashSet<>() + ); + } + contributors.add( grouping.contributor ); + } } + return databaseActionMap; } public static ExecutionOptions buildExecutionOptions( @@ -173,7 +175,7 @@ public static ExecutionOptions buildExecutionOptions( return new ExecutionOptions() { @Override public boolean shouldManageNamespaces() { - return Helper.interpretNamespaceHandling( configurationValues ); + return interpretNamespaceHandling( configurationValues ); } @Override @@ -196,17 +198,17 @@ private static void performDatabaseAction( final ExecutionOptions executionOptions, ContributableMatcher contributableInclusionFilter) { - // IMPL NOTE : JPA binds source and target info + // IMPL NOTE: JPA binds source and target info + final var configurationValues = executionOptions.getConfigurationValues(); switch ( action ) { case CREATE_ONLY: { - // - final JpaTargetAndSourceDescriptor createDescriptor = buildDatabaseTargetDescriptor( - executionOptions.getConfigurationValues(), + final var createDescriptor = buildDatabaseTargetDescriptor( + configurationValues, CreateSettingSelector.INSTANCE, serviceRegistry ); - tool.getSchemaCreator( executionOptions.getConfigurationValues() ).doCreation( + tool.getSchemaCreator( configurationValues ).doCreation( metadata, executionOptions, contributableInclusionFilter, @@ -217,24 +219,24 @@ private static void performDatabaseAction( } case CREATE: case CREATE_DROP: { - final JpaTargetAndSourceDescriptor dropDescriptor = buildDatabaseTargetDescriptor( - executionOptions.getConfigurationValues(), + final var dropDescriptor = buildDatabaseTargetDescriptor( + configurationValues, DropSettingSelector.INSTANCE, serviceRegistry ); - tool.getSchemaDropper( executionOptions.getConfigurationValues() ).doDrop( + tool.getSchemaDropper( configurationValues ).doDrop( metadata, executionOptions, contributableInclusionFilter, dropDescriptor, dropDescriptor ); - final JpaTargetAndSourceDescriptor createDescriptor = buildDatabaseTargetDescriptor( - executionOptions.getConfigurationValues(), + final var createDescriptor = buildDatabaseTargetDescriptor( + configurationValues, CreateSettingSelector.INSTANCE, serviceRegistry ); - tool.getSchemaCreator( executionOptions.getConfigurationValues() ).doCreation( + tool.getSchemaCreator( configurationValues ).doCreation( metadata, executionOptions, contributableInclusionFilter, @@ -244,12 +246,12 @@ private static void performDatabaseAction( break; } case DROP: { - final JpaTargetAndSourceDescriptor dropDescriptor = buildDatabaseTargetDescriptor( - executionOptions.getConfigurationValues(), + final var dropDescriptor = buildDatabaseTargetDescriptor( + configurationValues, DropSettingSelector.INSTANCE, serviceRegistry ); - tool.getSchemaDropper( executionOptions.getConfigurationValues() ).doDrop( + tool.getSchemaDropper( configurationValues ).doDrop( metadata, executionOptions, contributableInclusionFilter, @@ -259,12 +261,12 @@ private static void performDatabaseAction( break; } case UPDATE: { - final JpaTargetAndSourceDescriptor migrateDescriptor = buildDatabaseTargetDescriptor( - executionOptions.getConfigurationValues(), + final var migrateDescriptor = buildDatabaseTargetDescriptor( + configurationValues, MigrateSettingSelector.INSTANCE, serviceRegistry ); - tool.getSchemaMigrator( executionOptions.getConfigurationValues() ).doMigration( + tool.getSchemaMigrator( configurationValues ).doMigration( metadata, executionOptions, contributableInclusionFilter, @@ -273,7 +275,7 @@ private static void performDatabaseAction( break; } case VALIDATE: { - tool.getSchemaValidator( executionOptions.getConfigurationValues() ).doValidation( + tool.getSchemaValidator( configurationValues ).doValidation( metadata, executionOptions, contributableInclusionFilter @@ -281,12 +283,12 @@ private static void performDatabaseAction( break; } case TRUNCATE: { - tool.getSchemaTruncator( executionOptions.getConfigurationValues() ).doTruncate( + tool.getSchemaTruncator( configurationValues ).doTruncate( metadata, executionOptions, contributableInclusionFilter, buildDatabaseTargetDescriptor( - executionOptions.getConfigurationValues(), + configurationValues, CreateSettingSelector.INSTANCE, serviceRegistry ) @@ -294,10 +296,10 @@ private static void performDatabaseAction( break; } case POPULATE: { - tool.getSchemaPopulator( executionOptions.getConfigurationValues() ).doPopulation( + tool.getSchemaPopulator( configurationValues ).doPopulation( executionOptions, buildDatabaseTargetDescriptor( - executionOptions.getConfigurationValues(), + configurationValues, CreateSettingSelector.INSTANCE, serviceRegistry ) @@ -307,16 +309,18 @@ private static void performDatabaseAction( } } + private static SourceType sourceType(Map configuration, SettingSelector settingSelector, Object scriptSourceSetting) { + return SourceType.interpret( settingSelector.getSourceTypeSetting( configuration ), + scriptSourceSetting != null ? SourceType.SCRIPT : SourceType.METADATA ); + } + private static JpaTargetAndSourceDescriptor buildDatabaseTargetDescriptor( - Map configurationValues, + Map configuration, SettingSelector settingSelector, ServiceRegistry serviceRegistry) { - final Object scriptSourceSetting = settingSelector.getScriptSourceSetting( configurationValues ); - final SourceType sourceType = SourceType.interpret( - settingSelector.getSourceTypeSetting( configurationValues ), - scriptSourceSetting != null ? SourceType.SCRIPT : SourceType.METADATA - ); + final Object scriptSourceSetting = settingSelector.getScriptSourceSetting( configuration ); + final var sourceType = sourceType( configuration, settingSelector, scriptSourceSetting ); final boolean includesScripts = sourceType != SourceType.METADATA; if ( includesScripts && scriptSourceSetting == null ) { throw new SchemaManagementException( @@ -324,13 +328,12 @@ private static JpaTargetAndSourceDescriptor buildDatabaseTargetDescriptor( ); } - final ScriptSourceInput scriptSourceInput = includesScripts - ? Helper.interpretScriptSourceSetting( - scriptSourceSetting, - serviceRegistry.getService( ClassLoaderService.class ), - (String) configurationValues.get( AvailableSettings.HBM2DDL_CHARSET_NAME ) - ) - : null; + final var scriptSourceInput = + includesScripts + ? interpretScriptSourceSetting( scriptSourceSetting, + serviceRegistry.getService( ClassLoaderService.class ), + (String) configuration.get( HBM2DDL_CHARSET_NAME ) ) + : null; return new JpaTargetAndSourceDescriptor() { @Override @@ -362,15 +365,17 @@ private static void performScriptAction( ServiceRegistry serviceRegistry, ExecutionOptions executionOptions, ConfigurationService configurationService) { + + final var configurationValues = executionOptions.getConfigurationValues(); switch ( scriptAction ) { case CREATE_ONLY: { - final JpaTargetAndSourceDescriptor createDescriptor = buildScriptTargetDescriptor( - executionOptions.getConfigurationValues(), + final var createDescriptor = buildScriptTargetDescriptor( + configurationValues, CreateSettingSelector.INSTANCE, serviceRegistry, configurationService ); - tool.getSchemaCreator( executionOptions.getConfigurationValues() ).doCreation( + tool.getSchemaCreator( configurationValues ).doCreation( metadata, executionOptions, (contributed) -> true, @@ -381,61 +386,61 @@ private static void performScriptAction( } case CREATE: case CREATE_DROP: { - final JpaTargetAndSourceDescriptor dropDescriptor = buildScriptTargetDescriptor( - executionOptions.getConfigurationValues(), + final var dropDescriptor = buildScriptTargetDescriptor( + configurationValues, DropSettingSelector.INSTANCE, serviceRegistry, configurationService ); - tool.getSchemaDropper( executionOptions.getConfigurationValues() ).doDrop( + tool.getSchemaDropper( configurationValues ).doDrop( metadata, executionOptions, - (contributed) -> true, + contributed -> true, dropDescriptor, dropDescriptor ); - final JpaTargetAndSourceDescriptor createDescriptor = buildScriptTargetDescriptor( - executionOptions.getConfigurationValues(), + final var createDescriptor = buildScriptTargetDescriptor( + configurationValues, CreateSettingSelector.INSTANCE, serviceRegistry, configurationService ); - tool.getSchemaCreator( executionOptions.getConfigurationValues() ).doCreation( + tool.getSchemaCreator( configurationValues ).doCreation( metadata, executionOptions, - (contributed) -> true, + contributed -> true, createDescriptor, createDescriptor ); break; } case DROP: { - final JpaTargetAndSourceDescriptor dropDescriptor = buildScriptTargetDescriptor( - executionOptions.getConfigurationValues(), + final var dropDescriptor = buildScriptTargetDescriptor( + configurationValues, DropSettingSelector.INSTANCE, serviceRegistry, configurationService ); - tool.getSchemaDropper( executionOptions.getConfigurationValues() ).doDrop( + tool.getSchemaDropper( configurationValues ).doDrop( metadata, executionOptions, - (contributed) -> true, + contributed -> true, dropDescriptor, dropDescriptor ); break; } case UPDATE: { - final JpaTargetAndSourceDescriptor migrateDescriptor = buildScriptTargetDescriptor( - executionOptions.getConfigurationValues(), + final var migrateDescriptor = buildScriptTargetDescriptor( + configurationValues, MigrateSettingSelector.INSTANCE, serviceRegistry, configurationService ); - tool.getSchemaMigrator( executionOptions.getConfigurationValues() ).doMigration( + tool.getSchemaMigrator( configurationValues ).doMigration( metadata, executionOptions, - (contributed) -> true, + contributed -> true, migrateDescriptor ); break; @@ -447,16 +452,15 @@ private static void performScriptAction( } private static JpaTargetAndSourceDescriptor buildScriptTargetDescriptor( - Map configurationValues, + Map configuration, SettingSelector settingSelector, ServiceRegistry serviceRegistry, ConfigurationService configurationService) { - final Object scriptSourceSetting = settingSelector.getScriptSourceSetting( configurationValues ); - final SourceType sourceType = SourceType.interpret( - settingSelector.getSourceTypeSetting( configurationValues ), - scriptSourceSetting != null ? SourceType.SCRIPT : SourceType.METADATA - ); + final Object scriptTargetSetting = settingSelector.getScriptTargetSetting( configuration ); + final Object scriptSourceSetting = settingSelector.getScriptSourceSetting( configuration ); + + final var sourceType = sourceType( configuration, settingSelector, scriptSourceSetting ); final boolean includesScripts = sourceType != SourceType.METADATA; if ( includesScripts && scriptSourceSetting == null ) { throw new SchemaManagementException( @@ -464,20 +468,15 @@ private static JpaTargetAndSourceDescriptor buildScriptTargetDescriptor( ); } - String charsetName = (String) configurationValues.get( AvailableSettings.HBM2DDL_CHARSET_NAME ); - - final ScriptSourceInput scriptSourceInput = includesScripts - ? Helper.interpretScriptSourceSetting( scriptSourceSetting, serviceRegistry.getService( ClassLoaderService.class ), charsetName ) - : null; - - - boolean append = configurationService.getSetting( AvailableSettings.HBM2DDL_SCRIPTS_CREATE_APPEND, StandardConverters.BOOLEAN, true ); - final ScriptTargetOutput scriptTargetOutput = Helper.interpretScriptTargetSetting( - settingSelector.getScriptTargetSetting( configurationValues ), - serviceRegistry.getService( ClassLoaderService.class ), - charsetName, - append - ); + final String charsetName = (String) configuration.get( HBM2DDL_CHARSET_NAME ); + final var classLoaderService = serviceRegistry.getService( ClassLoaderService.class ); + final var scriptSourceInput = + includesScripts + ? interpretScriptSourceSetting( scriptSourceSetting, classLoaderService, charsetName ) + : null; + final var scriptTargetOutput = + interpretScriptTargetSetting( scriptTargetSetting, classLoaderService, charsetName, + configurationService.getSetting( HBM2DDL_SCRIPTS_CREATE_APPEND, BOOLEAN, true ) ); return new JpaTargetAndSourceDescriptor() { @Override @@ -502,22 +501,46 @@ public ScriptSourceInput getScriptSourceInput() { }; } - private interface SettingSelector { Object getSourceTypeSetting(Map configurationValues); Object getScriptSourceSetting(Map configurationValues); Object getScriptTargetSetting(Map configurationValues); } - private static Object getConfigurationValue(final Map configurationValues, final String referenceKey, final String legacyKey) { - Object setting = configurationValues.get( referenceKey ); - if ( setting == null ) { - setting = configurationValues.get( legacyKey ); - if ( setting != null ) { + private static Object settingValue(Map configuration, String referenceKey, String legacyKey) { + final Object setting = configuration.get( referenceKey ); + if ( setting != null ) { + return setting; + } + else { + final Object legacySetting = configuration.get( legacyKey ); + if ( legacySetting != null ) { DEPRECATION_LOGGER.deprecatedSetting( referenceKey, legacyKey ); } + return legacySetting; + } + } + + private static Object actionSettingValue( + Map configuration, String contributor, + String jakartaSettingName, String javaxSettingName) { + final Object actionSetting = + configuration.get( qualify( contributor, jakartaSettingName ) ); + if ( actionSetting != null ) { + return actionSetting; } - return setting; + else { + final Object deprecatedActionSetting = + configuration.get( qualify( contributor, javaxSettingName ) ); + if ( deprecatedActionSetting != null ) { + DEPRECATION_LOGGER.deprecatedSetting( javaxSettingName, jakartaSettingName ); + } + return deprecatedActionSetting; + } + } + + private static String qualify(String contributor, String settingName) { + return contributor == null ? settingName : settingName + '.' + contributor; } private static class CreateSettingSelector implements SettingSelector { @@ -528,17 +551,29 @@ private static class CreateSettingSelector implements SettingSelector { @Override public Object getSourceTypeSetting(Map configurationValues) { - return getConfigurationValue( configurationValues, JAKARTA_HBM2DDL_CREATE_SOURCE, HBM2DDL_CREATE_SOURCE ); + return settingValue( + configurationValues, + JAKARTA_HBM2DDL_CREATE_SOURCE, + HBM2DDL_CREATE_SOURCE + ); } @Override public Object getScriptSourceSetting(Map configurationValues) { - return getConfigurationValue( configurationValues, JAKARTA_HBM2DDL_CREATE_SCRIPT_SOURCE, HBM2DDL_CREATE_SCRIPT_SOURCE ); + return settingValue( + configurationValues, + JAKARTA_HBM2DDL_CREATE_SCRIPT_SOURCE, + HBM2DDL_CREATE_SCRIPT_SOURCE + ); } @Override public Object getScriptTargetSetting(Map configurationValues) { - return getConfigurationValue( configurationValues, JAKARTA_HBM2DDL_SCRIPTS_CREATE_TARGET, HBM2DDL_SCRIPTS_CREATE_TARGET ); + return settingValue( + configurationValues, + JAKARTA_HBM2DDL_SCRIPTS_CREATE_TARGET, + HBM2DDL_SCRIPTS_CREATE_TARGET + ); } } @@ -550,17 +585,29 @@ private static class DropSettingSelector implements SettingSelector { @Override public Object getSourceTypeSetting(Map configurationValues) { - return getConfigurationValue( configurationValues, JAKARTA_HBM2DDL_DROP_SOURCE, HBM2DDL_DROP_SOURCE ); + return settingValue( + configurationValues, + JAKARTA_HBM2DDL_DROP_SOURCE, + HBM2DDL_DROP_SOURCE + ); } @Override public Object getScriptSourceSetting(Map configurationValues) { - return getConfigurationValue( configurationValues, JAKARTA_HBM2DDL_DROP_SCRIPT_SOURCE, HBM2DDL_DROP_SCRIPT_SOURCE ); + return settingValue( + configurationValues, + JAKARTA_HBM2DDL_DROP_SCRIPT_SOURCE, + HBM2DDL_DROP_SCRIPT_SOURCE + ); } @Override public Object getScriptTargetSetting(Map configurationValues) { - return getConfigurationValue( configurationValues, JAKARTA_HBM2DDL_SCRIPTS_DROP_TARGET, HBM2DDL_SCRIPTS_DROP_TARGET ); + return settingValue( + configurationValues, + JAKARTA_HBM2DDL_SCRIPTS_DROP_TARGET, + HBM2DDL_SCRIPTS_DROP_TARGET + ); } } @@ -588,7 +635,11 @@ public Object getScriptSourceSetting(Map configurationValues) { @Override public Object getScriptTargetSetting(Map configurationValues) { // for now, reuse the CREATE script target setting - return getConfigurationValue( configurationValues, JAKARTA_HBM2DDL_SCRIPTS_CREATE_TARGET, HBM2DDL_SCRIPTS_CREATE_TARGET ); + return settingValue( + configurationValues, + JAKARTA_HBM2DDL_SCRIPTS_CREATE_TARGET, + HBM2DDL_SCRIPTS_CREATE_TARGET + ); } } @@ -597,57 +648,32 @@ public Object getScriptTargetSetting(Map configurationValues) { * individually - this tuple allows interpreting the action for both targets * simultaneously */ - public static class ActionGrouping { - private final String contributor; - private final Action databaseAction; - private final Action scriptAction; - - public ActionGrouping(String contributor, Action databaseAction, Action scriptAction) { - this.contributor = contributor; - this.databaseAction = databaseAction; - this.scriptAction = scriptAction; - } - - public String getContributor() { - return contributor; - } - - public Action getDatabaseAction() { - return databaseAction; - } - - public Action getScriptAction() { - return scriptAction; - } + public record ActionGrouping(String contributor, Action databaseAction, Action scriptAction) { /** * For test use. See {@link #interpret(Metadata, Map)} for the "real" impl */ @Internal - public static ActionGrouping interpret(Map configurationValues) { + public static ActionGrouping interpret(Map configurationValues) { // default to the JPA settings - Action databaseAction = determineJpaDbActionSetting( configurationValues ); - Action scriptAction = determineJpaScriptActionSetting( configurationValues ); - - // if no JPA settings were specified, look at the legacy HBM2DDL_AUTO setting... - if ( databaseAction == null && scriptAction == null ) { - final Action autoAction = determineAutoSettingImpliedAction( configurationValues, null, null ); - if ( autoAction != null ) { - databaseAction = autoAction; - } + final Action databaseAction = determineJpaDbActionSetting( configurationValues ); + final Action scriptAction = determineJpaScriptActionSetting( configurationValues ); + if ( databaseAction != null || scriptAction != null ) { + return new ActionGrouping( "orm", + databaseAction == null ? Action.NONE : databaseAction, + scriptAction == null ? Action.NONE : scriptAction ); } - - if ( databaseAction == null ) { - databaseAction = Action.NONE; - } - if ( scriptAction == null ) { - scriptAction = Action.NONE; + else { + // if no JPA settings were specified, look at the legacy HBM2DDL_AUTO setting + final Action autoAction = + determineAutoSettingImpliedAction( configurationValues, null, null ); + return new ActionGrouping( "orm", + autoAction == null ? Action.NONE : autoAction, + Action.NONE); } - - return new ActionGrouping( "orm", databaseAction, scriptAction ); } - private static Action determineJpaDbActionSetting(Map configurationValues) { + private static Action determineJpaDbActionSetting(Map configurationValues) { return determineJpaDbActionSetting( configurationValues, null, null ); } @@ -656,28 +682,18 @@ private static Action determineJpaDbActionSetting(Map configurationValues) */ @Internal public static Action determineJpaDbActionSetting( - Map configurationValues, + Map configuration, String contributor, Action defaultValue) { - final String jakartaSettingName = contributor == null - ? JAKARTA_HBM2DDL_DATABASE_ACTION - : JAKARTA_HBM2DDL_DATABASE_ACTION + "." + contributor; - final String javaxSettingName = contributor == null - ? HBM2DDL_DATABASE_ACTION - : HBM2DDL_DATABASE_ACTION + "." + contributor; - - Object databaseActionSetting = configurationValues.get( jakartaSettingName ); - if ( databaseActionSetting == null ) { - databaseActionSetting = configurationValues.get( javaxSettingName ); - if ( databaseActionSetting != null ) { - DEPRECATION_LOGGER.deprecatedSetting( HBM2DDL_DATABASE_ACTION, JAKARTA_HBM2DDL_DATABASE_ACTION ); - } - } - - return databaseActionSetting == null ? defaultValue : Action.interpretJpaSetting( databaseActionSetting ); + final Object databaseActionSetting = + actionSettingValue( configuration, contributor, + JAKARTA_HBM2DDL_DATABASE_ACTION, HBM2DDL_DATABASE_ACTION ); + return databaseActionSetting == null + ? defaultValue + : interpretJpaSetting( databaseActionSetting ); } - private static Action determineJpaScriptActionSetting(Map configurationValues) { + private static Action determineJpaScriptActionSetting(Map configurationValues) { return determineJpaScriptActionSetting( configurationValues, null, null ); } @@ -686,102 +702,84 @@ private static Action determineJpaScriptActionSetting(Map configurationValu */ @Internal public static Action determineJpaScriptActionSetting( - Map configurationValues, + Map configuration, String contributor, Action defaultValue) { - final String jakartaSettingName = contributor == null - ? JAKARTA_HBM2DDL_SCRIPTS_ACTION - : JAKARTA_HBM2DDL_SCRIPTS_ACTION + "." + contributor; - final String javaxSettingName = contributor == null - ? HBM2DDL_SCRIPTS_ACTION - : HBM2DDL_SCRIPTS_ACTION + "." + contributor; - - Object scriptsActionSetting = configurationValues.get( jakartaSettingName ); - if ( scriptsActionSetting == null ) { - scriptsActionSetting = configurationValues.get( javaxSettingName ); - if ( scriptsActionSetting != null ) { - DEPRECATION_LOGGER.deprecatedSetting( HBM2DDL_SCRIPTS_ACTION, JAKARTA_HBM2DDL_SCRIPTS_ACTION ); - } - } - - return scriptsActionSetting == null ? defaultValue : Action.interpretJpaSetting( scriptsActionSetting ); + final Object scriptsActionSetting = + actionSettingValue( configuration, contributor, + JAKARTA_HBM2DDL_SCRIPTS_ACTION, HBM2DDL_SCRIPTS_ACTION ); + return scriptsActionSetting == null ? defaultValue : interpretJpaSetting( scriptsActionSetting ); } - public static Action determineAutoSettingImpliedAction(Map settings, String contributor, Action defaultValue) { - final String settingName = contributor == null - ? HBM2DDL_AUTO - : HBM2DDL_AUTO + "." + contributor; - - final Object scriptsActionSetting = settings.get( settingName ); - if ( scriptsActionSetting == null ) { - return defaultValue; - } - - return Action.interpretHbm2ddlSetting( scriptsActionSetting ); + private static Action determineAutoSettingImpliedAction(Map settings, String contributor, Action defaultValue) { + final Object actionSetting = settings.get( qualify( contributor, HBM2DDL_AUTO ) ); + return actionSetting == null ? defaultValue : interpretHbm2ddlSetting( actionSetting ); } - public static Set interpret(Set contributors, Map configurationValues) { + public static Set interpret(Set contributors, Map configuration) { // these represent the base (non-contributor-specific) values - final Action rootDatabaseAction = determineJpaDbActionSetting( configurationValues, null, null ); - final Action rootScriptAction = determineJpaScriptActionSetting( configurationValues, null, null ); - - final Action rootAutoAction = determineAutoSettingImpliedAction( configurationValues, null, null ); - + final Action rootDatabaseAction = + determineJpaDbActionSetting( configuration, null, null ); + final Action rootScriptAction = + determineJpaScriptActionSetting( configuration, null, null ); + final Action rootAutoAction = + determineAutoSettingImpliedAction( configuration, null, null ); final Set groupings = new HashSet<>( contributors.size() ); - // for each contributor, look for specific tooling config values for ( String contributor : contributors ) { - Action databaseActionToUse = determineJpaDbActionSetting( configurationValues, contributor, rootDatabaseAction ); - Action scriptActionToUse = determineJpaScriptActionSetting( configurationValues, contributor, rootScriptAction ); - - if ( databaseActionToUse == null && scriptActionToUse == null ) { - // no JPA (jakarta nor javax) settings were specified, use the legacy Hibernate - // `hbm2ddl.auto` setting to possibly set the database-action - final Action contributorAutoSetting = determineAutoSettingImpliedAction( configurationValues, contributor, rootAutoAction ); - if ( contributorAutoSetting != null ) { - databaseActionToUse = contributorAutoSetting; - } - } - - if ( databaseActionToUse == null ) { - databaseActionToUse = Action.NONE; - } - if ( scriptActionToUse == null ) { - scriptActionToUse = Action.NONE; - } - - if ( databaseActionToUse == Action.NONE && scriptActionToUse == Action.NONE ) { + final Action scriptActionToUse = + scriptActionToUse( configuration, contributor, rootScriptAction ); + final Action databaseActionToUse = + databaseActionToUse( configuration, contributor, rootDatabaseAction, scriptActionToUse, rootAutoAction ); + if ( databaseActionToUse == Action.NONE && scriptActionToUse == Action.NONE ) { LOG.debugf( "No schema actions specified for contributor '%s'", contributor ); - continue; } - - groupings.add( new ActionGrouping( contributor, databaseActionToUse, scriptActionToUse ) ); + else { + groupings.add( new ActionGrouping( contributor, databaseActionToUse, scriptActionToUse ) ); + } } - return groupings; } - public static Set interpret(Metadata metadata, Map configurationValues) { - return interpret( metadata.getContributors(), configurationValues ); + private static Action scriptActionToUse(Map configurationValues, String contributor, Action rootScriptAction) { + final Action scriptActionToUse = + determineJpaScriptActionSetting( configurationValues, contributor, rootScriptAction ); + return scriptActionToUse == null ? Action.NONE : scriptActionToUse; } - @Override - public boolean equals(Object o) { - if ( this == o ) { - return true; + private static Action databaseActionToUse( + Map configuration, String contributor, + Action rootDatabaseAction, Action scriptActionToUse, Action rootAutoAction) { + final Action databaseActionToUse = + determineJpaDbActionSetting( configuration, contributor, rootDatabaseAction ); + if ( databaseActionToUse == null && scriptActionToUse == Action.NONE ) { + // no JPA (jakarta nor javax) settings were specified, try the legacy setting 'hbm2ddl.auto' + final Action contributorAutoSetting = + determineAutoSettingImpliedAction( configuration, contributor, rootAutoAction ); + return contributorAutoSetting == null ? Action.NONE : contributorAutoSetting; } - if ( o == null || getClass() != o.getClass() ) { - return false; + else { + return databaseActionToUse == null ? Action.NONE : databaseActionToUse; } - ActionGrouping that = (ActionGrouping) o; - return contributor.equals( that.contributor ) && - databaseAction == that.databaseAction && - scriptAction == that.scriptAction; } - @Override - public int hashCode() { - return Objects.hash( contributor ); + public static Set interpret(Metadata metadata, Map configuration) { + return interpret( metadata.getContributors(), configuration ); + } + + @Deprecated(since = "7.2", forRemoval = true) + public String getContributor() { + return contributor; + } + + @Deprecated(since = "7.2", forRemoval = true) + public Action getDatabaseAction() { + return databaseAction; + } + + @Deprecated(since = "7.2", forRemoval = true) + public Action getScriptAction() { + return scriptAction; } } } diff --git a/hibernate-core/src/test/java/org/hibernate/orm/test/bootstrap/schema/SchemaToolingAutoActionTests.java b/hibernate-core/src/test/java/org/hibernate/orm/test/bootstrap/schema/SchemaToolingAutoActionTests.java index 4a396770888c..047bb5debe66 100644 --- a/hibernate-core/src/test/java/org/hibernate/orm/test/bootstrap/schema/SchemaToolingAutoActionTests.java +++ b/hibernate-core/src/test/java/org/hibernate/orm/test/bootstrap/schema/SchemaToolingAutoActionTests.java @@ -26,7 +26,7 @@ public void testLegacySettingAsAction() { final ActionGrouping actionGrouping = ActionGrouping.interpret( props ); - assertThat( actionGrouping.getDatabaseAction(), is( Action.CREATE_DROP ) ); + assertThat( actionGrouping.databaseAction(), is( Action.CREATE_DROP ) ); } } diff --git a/hibernate-core/src/test/java/org/hibernate/orm/test/jpa/ejb3configuration/ConfigurationObjectSettingTest.java b/hibernate-core/src/test/java/org/hibernate/orm/test/jpa/ejb3configuration/ConfigurationObjectSettingTest.java index bb49000c9844..73494f6654a5 100644 --- a/hibernate-core/src/test/java/org/hibernate/orm/test/jpa/ejb3configuration/ConfigurationObjectSettingTest.java +++ b/hibernate-core/src/test/java/org/hibernate/orm/test/jpa/ejb3configuration/ConfigurationObjectSettingTest.java @@ -336,8 +336,8 @@ private void verifySchemaGenSettings( // next verify the action-group determination final ActionGrouping actionGrouping = ActionGrouping.interpret( settings ); - assertThat( actionGrouping.getDatabaseAction() ).isEqualTo( dbAction ); - assertThat( actionGrouping.getScriptAction() ).isEqualTo( scriptAction ); + assertThat( actionGrouping.databaseAction() ).isEqualTo( dbAction ); + assertThat( actionGrouping.scriptAction() ).isEqualTo( scriptAction ); // the check above uses a "for testing only" form of what happens for "real". // verify the "real" path as well @@ -348,9 +348,9 @@ private void verifySchemaGenSettings( final Set actionGroupings = ActionGrouping.interpret( metadata, settings ); assertThat( actionGroupings ).hasSize( 1 ); final ActionGrouping grouping = actionGroupings.iterator().next(); - assertThat( grouping.getContributor() ).isEqualTo( "orm" ); - assertThat( grouping.getDatabaseAction() ).isEqualTo( dbAction ); - assertThat( grouping.getScriptAction() ).isEqualTo( scriptAction ); + assertThat( grouping.contributor() ).isEqualTo( "orm" ); + assertThat( grouping.databaseAction() ).isEqualTo( dbAction ); + assertThat( grouping.scriptAction() ).isEqualTo( scriptAction ); // verify also interpreting the db-name, etc... they are used by SF/EMF to resolve Dialect final DialectResolver dialectResolver = new DialectResolverInitiator() diff --git a/hibernate-core/src/test/java/org/hibernate/orm/test/schematools/PrimaryKeyColumnOrderTest.java b/hibernate-core/src/test/java/org/hibernate/orm/test/schematools/PrimaryKeyColumnOrderTest.java index 21842a359879..4d6521c3edfb 100644 --- a/hibernate-core/src/test/java/org/hibernate/orm/test/schematools/PrimaryKeyColumnOrderTest.java +++ b/hibernate-core/src/test/java/org/hibernate/orm/test/schematools/PrimaryKeyColumnOrderTest.java @@ -24,7 +24,7 @@ import org.hibernate.engine.jdbc.spi.JdbcServices; import org.hibernate.orm.test.util.DdlTransactionIsolatorTestingImpl; import org.hibernate.resource.transaction.spi.DdlTransactionIsolator; -import org.hibernate.tool.schema.JdbcMetadaAccessStrategy; +import org.hibernate.tool.schema.JdbcMetadataAccessStrategy; import org.hibernate.tool.schema.extract.internal.DatabaseInformationImpl; import org.hibernate.tool.schema.extract.internal.ExtractionContextImpl; import org.hibernate.tool.schema.extract.spi.DatabaseInformation; @@ -89,7 +89,7 @@ public void getPrimaryKey() throws Exception { StandardServiceRegistry ssr = ServiceRegistryUtil.serviceRegistryBuilder() .applySetting( AvailableSettings.HBM2DDL_JDBC_METADATA_EXTRACTOR_STRATEGY, - JdbcMetadaAccessStrategy.GROUPED + JdbcMetadataAccessStrategy.GROUPED ) .build(); DdlTransactionIsolator ddlTransactionIsolator = null; diff --git a/hibernate-core/src/test/java/org/hibernate/orm/test/schemaupdate/ColumnNamesTest.java b/hibernate-core/src/test/java/org/hibernate/orm/test/schemaupdate/ColumnNamesTest.java index be1a78990cbd..7e1a79e1f2a3 100644 --- a/hibernate-core/src/test/java/org/hibernate/orm/test/schemaupdate/ColumnNamesTest.java +++ b/hibernate-core/src/test/java/org/hibernate/orm/test/schemaupdate/ColumnNamesTest.java @@ -22,7 +22,7 @@ import org.hibernate.cfg.AvailableSettings; import org.hibernate.tool.hbm2ddl.SchemaExport; import org.hibernate.tool.hbm2ddl.SchemaUpdate; -import org.hibernate.tool.schema.JdbcMetadaAccessStrategy; +import org.hibernate.tool.schema.JdbcMetadataAccessStrategy; import org.hibernate.tool.schema.TargetType; import org.hibernate.testing.util.ServiceRegistryUtil; @@ -43,7 +43,7 @@ public class ColumnNamesTest { @Parameterized.Parameters public static Collection parameters() { return Arrays.asList( - new String[] {JdbcMetadaAccessStrategy.GROUPED.toString(), JdbcMetadaAccessStrategy.INDIVIDUALLY.toString()} + new String[] {JdbcMetadataAccessStrategy.GROUPED.toString(), JdbcMetadataAccessStrategy.INDIVIDUALLY.toString()} ); } diff --git a/hibernate-core/src/test/java/org/hibernate/orm/test/schemaupdate/SchemaUpdateSQLServerTest.java b/hibernate-core/src/test/java/org/hibernate/orm/test/schemaupdate/SchemaUpdateSQLServerTest.java index 7004d6590264..2f4552052816 100644 --- a/hibernate-core/src/test/java/org/hibernate/orm/test/schemaupdate/SchemaUpdateSQLServerTest.java +++ b/hibernate-core/src/test/java/org/hibernate/orm/test/schemaupdate/SchemaUpdateSQLServerTest.java @@ -42,7 +42,7 @@ import org.hibernate.tool.hbm2ddl.SchemaExport; import org.hibernate.tool.hbm2ddl.SchemaUpdate; import org.hibernate.tool.hbm2ddl.SchemaValidator; -import org.hibernate.tool.schema.JdbcMetadaAccessStrategy; +import org.hibernate.tool.schema.JdbcMetadataAccessStrategy; import org.hibernate.tool.schema.TargetType; import org.hibernate.testing.RequiresDialect; @@ -69,7 +69,7 @@ public class SchemaUpdateSQLServerTest extends BaseUnitTestCase { @Parameterized.Parameters public static Collection parameters() { return Arrays.asList( - new String[] {JdbcMetadaAccessStrategy.GROUPED.toString(), JdbcMetadaAccessStrategy.INDIVIDUALLY.toString()} + new String[] {JdbcMetadataAccessStrategy.GROUPED.toString(), JdbcMetadataAccessStrategy.INDIVIDUALLY.toString()} ); } diff --git a/hibernate-core/src/test/java/org/hibernate/orm/test/schemaupdate/SchemaUpdateTest.java b/hibernate-core/src/test/java/org/hibernate/orm/test/schemaupdate/SchemaUpdateTest.java index 05f021dfb94a..8bf8ab0c83cd 100644 --- a/hibernate-core/src/test/java/org/hibernate/orm/test/schemaupdate/SchemaUpdateTest.java +++ b/hibernate-core/src/test/java/org/hibernate/orm/test/schemaupdate/SchemaUpdateTest.java @@ -44,7 +44,7 @@ import org.hibernate.tool.hbm2ddl.SchemaExport; import org.hibernate.tool.hbm2ddl.SchemaUpdate; import org.hibernate.tool.hbm2ddl.SchemaValidator; -import org.hibernate.tool.schema.JdbcMetadaAccessStrategy; +import org.hibernate.tool.schema.JdbcMetadataAccessStrategy; import org.hibernate.tool.schema.TargetType; import org.hibernate.testing.SkipLog; @@ -70,7 +70,7 @@ public class SchemaUpdateTest { @Parameterized.Parameters public static Collection parameters() { return Arrays.asList( - new String[] {JdbcMetadaAccessStrategy.GROUPED.toString(), JdbcMetadaAccessStrategy.INDIVIDUALLY.toString()} + new String[] {JdbcMetadataAccessStrategy.GROUPED.toString(), JdbcMetadataAccessStrategy.INDIVIDUALLY.toString()} ); } diff --git a/hibernate-core/src/test/java/org/hibernate/orm/test/schemaupdate/SchemaUpdateWithUseJdbcMetadataDefaultsSettingToFalseAndQuotedNameTest.java b/hibernate-core/src/test/java/org/hibernate/orm/test/schemaupdate/SchemaUpdateWithUseJdbcMetadataDefaultsSettingToFalseAndQuotedNameTest.java index 877deb332d83..4077870e7e8e 100644 --- a/hibernate-core/src/test/java/org/hibernate/orm/test/schemaupdate/SchemaUpdateWithUseJdbcMetadataDefaultsSettingToFalseAndQuotedNameTest.java +++ b/hibernate-core/src/test/java/org/hibernate/orm/test/schemaupdate/SchemaUpdateWithUseJdbcMetadataDefaultsSettingToFalseAndQuotedNameTest.java @@ -24,7 +24,7 @@ import org.hibernate.tool.hbm2ddl.SchemaExport; import org.hibernate.tool.hbm2ddl.SchemaUpdate; import org.hibernate.tool.hbm2ddl.SchemaValidator; -import org.hibernate.tool.schema.JdbcMetadaAccessStrategy; +import org.hibernate.tool.schema.JdbcMetadataAccessStrategy; import org.hibernate.tool.schema.TargetType; import org.hibernate.testing.orm.junit.JiraKey; @@ -76,8 +76,8 @@ public void tearDown() { } @ParameterizedTest - @EnumSource(JdbcMetadaAccessStrategy.class) - public void testSchemaUpdateDoesNotTryToRecreateExistingTables(JdbcMetadaAccessStrategy strategy) + @EnumSource(JdbcMetadataAccessStrategy.class) + public void testSchemaUpdateDoesNotTryToRecreateExistingTables(JdbcMetadataAccessStrategy strategy) throws Exception { setUp( strategy.toString() ); diff --git a/hibernate-core/src/test/java/org/hibernate/orm/test/schemaupdate/SchemaUpdateWithUseJdbcMetadataDefaultsSettingToFalseTest.java b/hibernate-core/src/test/java/org/hibernate/orm/test/schemaupdate/SchemaUpdateWithUseJdbcMetadataDefaultsSettingToFalseTest.java index 9abcd993a3cc..8f78959a4fb5 100644 --- a/hibernate-core/src/test/java/org/hibernate/orm/test/schemaupdate/SchemaUpdateWithUseJdbcMetadataDefaultsSettingToFalseTest.java +++ b/hibernate-core/src/test/java/org/hibernate/orm/test/schemaupdate/SchemaUpdateWithUseJdbcMetadataDefaultsSettingToFalseTest.java @@ -21,7 +21,7 @@ import org.hibernate.tool.hbm2ddl.SchemaExport; import org.hibernate.tool.hbm2ddl.SchemaUpdate; import org.hibernate.tool.hbm2ddl.SchemaValidator; -import org.hibernate.tool.schema.JdbcMetadaAccessStrategy; +import org.hibernate.tool.schema.JdbcMetadataAccessStrategy; import org.hibernate.tool.schema.TargetType; import org.hibernate.testing.orm.junit.JiraKey; @@ -75,8 +75,8 @@ public void tearDown() { } @ParameterizedTest - @EnumSource(JdbcMetadaAccessStrategy.class) - public void testSchemaUpdateDoesNotTryToRecreateExistingTables(JdbcMetadaAccessStrategy strategy) + @EnumSource(JdbcMetadataAccessStrategy.class) + public void testSchemaUpdateDoesNotTryToRecreateExistingTables(JdbcMetadataAccessStrategy strategy) throws Exception { setUp( strategy.toString() ); diff --git a/hibernate-core/src/test/java/org/hibernate/orm/test/schemavalidation/DurationValidationTest.java b/hibernate-core/src/test/java/org/hibernate/orm/test/schemavalidation/DurationValidationTest.java index 86f6c7a5ec79..a35030f78c35 100644 --- a/hibernate-core/src/test/java/org/hibernate/orm/test/schemavalidation/DurationValidationTest.java +++ b/hibernate-core/src/test/java/org/hibernate/orm/test/schemavalidation/DurationValidationTest.java @@ -19,7 +19,7 @@ import org.hibernate.dialect.PostgreSQLDialect; import org.hibernate.engine.config.spi.ConfigurationService; import org.hibernate.tool.hbm2ddl.SchemaExport; -import org.hibernate.tool.schema.JdbcMetadaAccessStrategy; +import org.hibernate.tool.schema.JdbcMetadataAccessStrategy; import org.hibernate.tool.schema.SourceType; import org.hibernate.tool.schema.TargetType; import org.hibernate.tool.schema.internal.ExceptionHandlerLoggedImpl; @@ -64,8 +64,8 @@ public class DurationValidationTest implements ExecutionOptions { private static Stream jdbcMetadataExtractorStrategies() { return Stream.of( - arguments( JdbcMetadaAccessStrategy.GROUPED.toString() ), - arguments( JdbcMetadaAccessStrategy.INDIVIDUALLY.toString() ) + arguments( JdbcMetadataAccessStrategy.GROUPED.toString() ), + arguments( JdbcMetadataAccessStrategy.INDIVIDUALLY.toString() ) ); } diff --git a/hibernate-core/src/test/java/org/hibernate/orm/test/schemavalidation/EnumValidationTest.java b/hibernate-core/src/test/java/org/hibernate/orm/test/schemavalidation/EnumValidationTest.java index 6a2142e0f135..e6ca843ec685 100644 --- a/hibernate-core/src/test/java/org/hibernate/orm/test/schemavalidation/EnumValidationTest.java +++ b/hibernate-core/src/test/java/org/hibernate/orm/test/schemavalidation/EnumValidationTest.java @@ -18,7 +18,7 @@ import org.hibernate.cfg.AvailableSettings; import org.hibernate.engine.config.spi.ConfigurationService; import org.hibernate.tool.hbm2ddl.SchemaExport; -import org.hibernate.tool.schema.JdbcMetadaAccessStrategy; +import org.hibernate.tool.schema.JdbcMetadataAccessStrategy; import org.hibernate.tool.schema.SourceType; import org.hibernate.tool.schema.TargetType; import org.hibernate.tool.schema.internal.ExceptionHandlerLoggedImpl; @@ -54,8 +54,8 @@ public class EnumValidationTest implements ExecutionOptions { @Parameterized.Parameters public static Collection parameters() { return Arrays.asList( - JdbcMetadaAccessStrategy.GROUPED.toString(), - JdbcMetadaAccessStrategy.INDIVIDUALLY.toString() + JdbcMetadataAccessStrategy.GROUPED.toString(), + JdbcMetadataAccessStrategy.INDIVIDUALLY.toString() ); } diff --git a/hibernate-core/src/test/java/org/hibernate/orm/test/schemavalidation/InstantValidationTest.java b/hibernate-core/src/test/java/org/hibernate/orm/test/schemavalidation/InstantValidationTest.java index 8556295a9395..e19c3b837010 100644 --- a/hibernate-core/src/test/java/org/hibernate/orm/test/schemavalidation/InstantValidationTest.java +++ b/hibernate-core/src/test/java/org/hibernate/orm/test/schemavalidation/InstantValidationTest.java @@ -17,7 +17,7 @@ import org.hibernate.cfg.AvailableSettings; import org.hibernate.engine.config.spi.ConfigurationService; import org.hibernate.tool.hbm2ddl.SchemaExport; -import org.hibernate.tool.schema.JdbcMetadaAccessStrategy; +import org.hibernate.tool.schema.JdbcMetadataAccessStrategy; import org.hibernate.tool.schema.SourceType; import org.hibernate.tool.schema.TargetType; import org.hibernate.tool.schema.internal.ExceptionHandlerLoggedImpl; @@ -51,8 +51,8 @@ public class InstantValidationTest implements ExecutionOptions { @Parameterized.Parameters public static Collection parameters() { return Arrays.asList( - JdbcMetadaAccessStrategy.GROUPED.toString(), - JdbcMetadaAccessStrategy.INDIVIDUALLY.toString() + JdbcMetadataAccessStrategy.GROUPED.toString(), + JdbcMetadataAccessStrategy.INDIVIDUALLY.toString() ); } diff --git a/hibernate-core/src/test/java/org/hibernate/orm/test/schemavalidation/LongVarcharValidationTest.java b/hibernate-core/src/test/java/org/hibernate/orm/test/schemavalidation/LongVarcharValidationTest.java index 9d37831c64f1..1567cf5a1b31 100644 --- a/hibernate-core/src/test/java/org/hibernate/orm/test/schemavalidation/LongVarcharValidationTest.java +++ b/hibernate-core/src/test/java/org/hibernate/orm/test/schemavalidation/LongVarcharValidationTest.java @@ -17,7 +17,7 @@ import org.hibernate.boot.spi.MetadataImplementor; import org.hibernate.cfg.AvailableSettings; import org.hibernate.engine.config.spi.ConfigurationService; -import org.hibernate.tool.schema.JdbcMetadaAccessStrategy; +import org.hibernate.tool.schema.JdbcMetadataAccessStrategy; import org.hibernate.tool.schema.SourceType; import org.hibernate.tool.schema.TargetType; import org.hibernate.tool.schema.internal.ExceptionHandlerLoggedImpl; @@ -51,8 +51,8 @@ public class LongVarcharValidationTest implements ExecutionOptions { @Parameterized.Parameters public static Collection parameters() { return Arrays.asList( - JdbcMetadaAccessStrategy.GROUPED.toString(), - JdbcMetadaAccessStrategy.INDIVIDUALLY.toString() + JdbcMetadataAccessStrategy.GROUPED.toString(), + JdbcMetadataAccessStrategy.INDIVIDUALLY.toString() ); } diff --git a/hibernate-core/src/test/java/org/hibernate/orm/test/schemavalidation/NumericValidationTest.java b/hibernate-core/src/test/java/org/hibernate/orm/test/schemavalidation/NumericValidationTest.java index dedf8f48d9f1..3645638b7658 100644 --- a/hibernate-core/src/test/java/org/hibernate/orm/test/schemavalidation/NumericValidationTest.java +++ b/hibernate-core/src/test/java/org/hibernate/orm/test/schemavalidation/NumericValidationTest.java @@ -20,7 +20,7 @@ import org.hibernate.cfg.AvailableSettings; import org.hibernate.engine.config.spi.ConfigurationService; import org.hibernate.tool.hbm2ddl.SchemaExport; -import org.hibernate.tool.schema.JdbcMetadaAccessStrategy; +import org.hibernate.tool.schema.JdbcMetadataAccessStrategy; import org.hibernate.tool.schema.SourceType; import org.hibernate.tool.schema.TargetType; import org.hibernate.tool.schema.internal.ExceptionHandlerLoggedImpl; @@ -50,8 +50,8 @@ public class NumericValidationTest implements ExecutionOptions { @Parameterized.Parameters public static Collection parameters() { return Arrays.asList( - JdbcMetadaAccessStrategy.GROUPED.toString(), - JdbcMetadaAccessStrategy.INDIVIDUALLY.toString() + JdbcMetadataAccessStrategy.GROUPED.toString(), + JdbcMetadataAccessStrategy.INDIVIDUALLY.toString() ); } diff --git a/hibernate-core/src/test/java/org/hibernate/orm/test/schemavalidation/SynonymValidationTest.java b/hibernate-core/src/test/java/org/hibernate/orm/test/schemavalidation/SynonymValidationTest.java index b66907f6f9e1..dc214c95daa5 100644 --- a/hibernate-core/src/test/java/org/hibernate/orm/test/schemavalidation/SynonymValidationTest.java +++ b/hibernate-core/src/test/java/org/hibernate/orm/test/schemavalidation/SynonymValidationTest.java @@ -11,7 +11,7 @@ import org.hibernate.dialect.DB2Dialect; import org.hibernate.dialect.OracleDialect; import org.hibernate.tool.hbm2ddl.SchemaValidator; -import org.hibernate.tool.schema.JdbcMetadaAccessStrategy; +import org.hibernate.tool.schema.JdbcMetadataAccessStrategy; import org.hibernate.testing.orm.junit.JiraKey; import org.hibernate.testing.orm.junit.BaseSessionFactoryFunctionalTest; @@ -90,7 +90,7 @@ public void testSynonymUsingIndividuallySchemaValidator() { .applySetting( AvailableSettings.ENABLE_SYNONYMS, "true" ) .applySetting( AvailableSettings.HBM2DDL_JDBC_METADATA_EXTRACTOR_STRATEGY, - JdbcMetadaAccessStrategy.INDIVIDUALLY + JdbcMetadataAccessStrategy.INDIVIDUALLY ) .build(); try { @@ -137,7 +137,7 @@ public void testSynonymUsingGroupedSchemaValidator() { .applySetting( AvailableSettings.ENABLE_SYNONYMS, "true" ) .applySetting( AvailableSettings.HBM2DDL_JDBC_METADATA_EXTRACTOR_STRATEGY, - JdbcMetadaAccessStrategy.GROUPED + JdbcMetadataAccessStrategy.GROUPED ) .build(); try { diff --git a/hibernate-core/src/test/java/org/hibernate/orm/test/schemavalidation/ViewValidationTest.java b/hibernate-core/src/test/java/org/hibernate/orm/test/schemavalidation/ViewValidationTest.java index 4ffa917f3801..441fe5a925cb 100644 --- a/hibernate-core/src/test/java/org/hibernate/orm/test/schemavalidation/ViewValidationTest.java +++ b/hibernate-core/src/test/java/org/hibernate/orm/test/schemavalidation/ViewValidationTest.java @@ -19,7 +19,7 @@ import org.hibernate.dialect.PostgreSQLDialect; import org.hibernate.tool.hbm2ddl.SchemaValidator; -import org.hibernate.tool.schema.JdbcMetadaAccessStrategy; +import org.hibernate.tool.schema.JdbcMetadataAccessStrategy; import org.hibernate.testing.RequiresDialect; import org.hibernate.testing.RequiresDialects; @@ -66,7 +66,7 @@ public void testSynonymUsingGroupedSchemaValidator() { .applySetting( AvailableSettings.ENABLE_SYNONYMS, "true" ) .applySetting( AvailableSettings.HBM2DDL_JDBC_METADATA_EXTRACTOR_STRATEGY, - JdbcMetadaAccessStrategy.GROUPED + JdbcMetadataAccessStrategy.GROUPED ) .build(); try { @@ -87,7 +87,7 @@ public void testSynonymUsingIndividuallySchemaValidator() { .applySetting( AvailableSettings.ENABLE_SYNONYMS, "true" ) .applySetting( AvailableSettings.HBM2DDL_JDBC_METADATA_EXTRACTOR_STRATEGY, - JdbcMetadaAccessStrategy.INDIVIDUALLY + JdbcMetadataAccessStrategy.INDIVIDUALLY ) .build(); try { diff --git a/hibernate-envers/src/main/java/org/hibernate/envers/internal/EnversLogging.java b/hibernate-envers/src/main/java/org/hibernate/envers/internal/EnversLogging.java index df380cd6c76e..3b3f64736bdb 100644 --- a/hibernate-envers/src/main/java/org/hibernate/envers/internal/EnversLogging.java +++ b/hibernate-envers/src/main/java/org/hibernate/envers/internal/EnversLogging.java @@ -28,7 +28,7 @@ public static EnversMessageLogger messageLogger(String loggerName) { return Logger.getMessageLogger( MethodHandles.lookup(), EnversMessageLogger .class, loggerName ); } - public static Logger logger(Class classNeedingLogging) { + public static Logger logger(Class classNeedingLogging) { return Logger.getLogger( classNeedingLogging ); }