This is an automated email from the ASF dual-hosted git repository. borinquenkid pushed a commit to branch 8.0.x-hibernate7-dev in repository https://gitbox.apache.org/repos/asf/grails-core.git
commit c36bfc7ef45bb4b0f2219b30508221cb4ccfb5b3 Author: Walter Duque de Estrada <[email protected]> AuthorDate: Thu Mar 12 16:19:05 2026 -0500 hibernate 7: reducing arguments to HibernatePersistentEntity --- .../orm/hibernate/cfg/HibernateMappingContext.java | 17 ++++++----------- .../cfg/domainbinding/binder/GrailsDomainBinder.java | 6 ++++-- .../hibernate/cfg/domainbinding/binder/RootBinder.java | 5 +++-- .../hibernate/GrailsHibernatePersistentEntity.java | 12 +++++++----- .../cfg/domainbinding/util/MultiTenantFilterBinder.java | 3 ++- .../cfg/domainbinding/binder/RootBinderSpec.groovy | 10 +++++----- .../cfg/domainbinding/binder/SubClassBinderSpec.groovy | 11 ++++++----- .../util/MultiTenantFilterBinderSpec.groovy | 10 +++++----- 8 files changed, 38 insertions(+), 36 deletions(-) diff --git a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/HibernateMappingContext.java b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/HibernateMappingContext.java index c07f763c1f..a92e760f28 100644 --- a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/HibernateMappingContext.java +++ b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/HibernateMappingContext.java @@ -116,16 +116,11 @@ public class HibernateMappingContext extends AbstractMappingContext { return super.getPersistentEntity(name); } - public Collection<GrailsHibernatePersistentEntity> getHibernatePersistentEntities(String dataSourceName) { - List<GrailsHibernatePersistentEntity> result = new ArrayList<>(); - if (persistentEntities != null) { - for (PersistentEntity entity : persistentEntities) { - if (entity instanceof GrailsHibernatePersistentEntity hibernateEntity) { - hibernateEntity.setDataSourceName(dataSourceName); - result.add(hibernateEntity); - } - } - } - return result; + public List<HibernatePersistentEntity> getHibernatePersistentEntities(String dataSourceName) { + return persistentEntities.stream() + .filter(HibernatePersistentEntity.class::isInstance) + .map(HibernatePersistentEntity.class::cast) + .peek(hibernateEntity -> hibernateEntity.setDataSourceName(dataSourceName)) + .toList(); } } diff --git a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/GrailsDomainBinder.java b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/GrailsDomainBinder.java index 94d7ea3f25..fd075a71bc 100644 --- a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/GrailsDomainBinder.java +++ b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/GrailsDomainBinder.java @@ -37,6 +37,7 @@ import org.grails.orm.hibernate.cfg.MappingCacheHolder; import org.grails.orm.hibernate.cfg.PersistentEntityNamingStrategy; import org.grails.orm.hibernate.cfg.domainbinding.collectionType.CollectionHolder; import org.grails.orm.hibernate.cfg.domainbinding.hibernate.GrailsHibernatePersistentEntity; +import org.grails.orm.hibernate.cfg.domainbinding.hibernate.HibernatePersistentEntity; import org.grails.orm.hibernate.cfg.domainbinding.util.BackticksRemover; import org.grails.orm.hibernate.cfg.domainbinding.util.BasicValueIdCreator; import org.grails.orm.hibernate.cfg.domainbinding.util.ColumnNameForPropertyAndPathFetcher; @@ -89,7 +90,7 @@ public class GrailsDomainBinder implements AdditionalMappingContributor, TypeCon this.mappingCacheHolder = MappingCacheHolder.getInstance(); // pre-build mappings - for (GrailsHibernatePersistentEntity persistentEntity : + for (HibernatePersistentEntity persistentEntity : hibernateMappingContext.getHibernatePersistentEntities(dataSourceName)) { mappingCacheHolder.cacheMapping(persistentEntity); } @@ -220,7 +221,8 @@ public class GrailsDomainBinder implements AdditionalMappingContributor, TypeCon discriminatorPropertyBinder, metadataCollector); - hibernateMappingContext.getHibernatePersistentEntities(dataSourceName).stream() + hibernateMappingContext.getHibernatePersistentEntities(dataSourceName) + .stream() .filter(persistentEntity -> persistentEntity.forGrailsDomainMapping(dataSourceName)) .forEach(rootBinder::bindRoot); } diff --git a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/RootBinder.java b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/RootBinder.java index 1e73138432..4ebc00b374 100644 --- a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/RootBinder.java +++ b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/RootBinder.java @@ -28,6 +28,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.grails.orm.hibernate.cfg.domainbinding.hibernate.GrailsHibernatePersistentEntity; +import org.grails.orm.hibernate.cfg.domainbinding.hibernate.HibernatePersistentEntity; import org.grails.orm.hibernate.cfg.domainbinding.util.MultiTenantFilterBinder; /** Binder for root classes. */ @@ -64,13 +65,13 @@ public class RootBinder { * * @param entity The Grails domain class */ - public void bindRoot(@Nonnull GrailsHibernatePersistentEntity entity) { + public void bindRoot(@Nonnull HibernatePersistentEntity entity) { if (mappings.getEntityBinding(entity.getName()) != null) { LOG.warn("[RootBinder] Class [" + entity.getName() + "] is already mapped, skipping.. "); return; } - Collection<GrailsHibernatePersistentEntity> children = entity.getChildEntities(dataSourceName); + var children = entity.getChildEntities(dataSourceName); RootClass root = rootPersistentClassCommonValuesBinder.bindRoot(entity); if (!children.isEmpty() && entity.isTablePerHierarchy()) { diff --git a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/hibernate/GrailsHibernatePersistentEntity.java b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/hibernate/GrailsHibernatePersistentEntity.java index b93bab2c98..537d4b30e5 100644 --- a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/hibernate/GrailsHibernatePersistentEntity.java +++ b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/hibernate/GrailsHibernatePersistentEntity.java @@ -228,14 +228,16 @@ public interface GrailsHibernatePersistentEntity extends PersistentEntity { .toList(); } - default List<GrailsHibernatePersistentEntity> getChildEntities() { + default List<HibernatePersistentEntity> getChildEntities() { return getChildEntities(getDataSourceName()); } - default List<GrailsHibernatePersistentEntity> getChildEntities(String dataSourceName) { - return getMappingContext().getDirectChildEntities(this).stream() - .filter(GrailsHibernatePersistentEntity.class::isInstance) - .map(GrailsHibernatePersistentEntity.class::cast) + default List<HibernatePersistentEntity> getChildEntities(String dataSourceName) { + return getMappingContext() + .getDirectChildEntities(this) + .stream() + .filter(HibernatePersistentEntity.class::isInstance) + .map(HibernatePersistentEntity.class::cast) .filter(persistentEntity -> persistentEntity.usesConnectionSource(dataSourceName)) .filter(sub -> sub.getJavaClass().getSuperclass().equals(this.getJavaClass())) .toList(); diff --git a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/util/MultiTenantFilterBinder.java b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/util/MultiTenantFilterBinder.java index 53715357d0..526c2750d7 100644 --- a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/util/MultiTenantFilterBinder.java +++ b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/util/MultiTenantFilterBinder.java @@ -36,6 +36,7 @@ import org.hibernate.mapping.UnionSubclass; import org.grails.datastore.mapping.model.config.GormProperties; import org.grails.orm.hibernate.cfg.domainbinding.hibernate.GrailsHibernatePersistentEntity; +import org.grails.orm.hibernate.cfg.domainbinding.hibernate.HibernatePersistentEntity; import org.grails.orm.hibernate.cfg.domainbinding.hibernate.HibernatePersistentProperty; /** @@ -69,7 +70,7 @@ public class MultiTenantFilterBinder { * @return The filter definition applied, or null if none */ @Nullable - public FilterDefinition bind(@Nonnull GrailsHibernatePersistentEntity entity, @Nonnull RootClass rootClass) { + public FilterDefinition bind(@Nonnull HibernatePersistentEntity entity, @Nonnull RootClass rootClass) { return doBind(entity, rootClass); } diff --git a/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/RootBinderSpec.groovy b/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/RootBinderSpec.groovy index 0a42629250..d5753dead0 100644 --- a/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/RootBinderSpec.groovy +++ b/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/RootBinderSpec.groovy @@ -4,7 +4,7 @@ package org.grails.orm.hibernate.cfg.domainbinding.binder import grails.gorm.specs.HibernateGormDatastoreSpec import org.grails.orm.hibernate.cfg.Mapping import org.grails.orm.hibernate.cfg.PersistentEntityNamingStrategy -import org.grails.orm.hibernate.cfg.domainbinding.hibernate.GrailsHibernatePersistentEntity +import org.grails.orm.hibernate.cfg.domainbinding.hibernate.HibernatePersistentEntity import org.grails.orm.hibernate.cfg.domainbinding.util.MultiTenantFilterBinder import org.hibernate.boot.spi.MetadataBuildingContext import org.hibernate.mapping.RootClass @@ -43,7 +43,7 @@ class RootBinderSpec extends HibernateGormDatastoreSpec { def "test bindRoot with no children"() { given: - def entity = Mock(GrailsHibernatePersistentEntity) + def entity = Mock(HibernatePersistentEntity) entity.getName() >> "Parent" entity.getChildEntities("default") >> [] entity.getMappedForm() >> new Mapping() @@ -66,8 +66,8 @@ class RootBinderSpec extends HibernateGormDatastoreSpec { def "test bindRoot with children and table-per-hierarchy"() { given: - def entity = Mock(GrailsHibernatePersistentEntity) - def childEntity = Mock(GrailsHibernatePersistentEntity) + def entity = Mock(HibernatePersistentEntity) + def childEntity = Mock(HibernatePersistentEntity) entity.getName() >> "Parent" entity.getChildEntities("default") >> [childEntity] def mapping = new Mapping() @@ -93,7 +93,7 @@ class RootBinderSpec extends HibernateGormDatastoreSpec { def "test bindRoot already mapped"() { given: - def entity = Mock(GrailsHibernatePersistentEntity) + def entity = Mock(HibernatePersistentEntity) entity.getName() >> "Parent" def mappings = sharedCollector def rootClass = new RootClass(metadataBuildingContext) diff --git a/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/SubClassBinderSpec.groovy b/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/SubClassBinderSpec.groovy index fe89406f1d..b425102b7d 100644 --- a/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/SubClassBinderSpec.groovy +++ b/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/SubClassBinderSpec.groovy @@ -1,10 +1,11 @@ package org.grails.orm.hibernate.cfg.domainbinding.binder +import org.hibernate.mapping.SingleTableSubclass import grails.gorm.specs.HibernateGormDatastoreSpec import org.grails.orm.hibernate.cfg.Mapping import org.grails.orm.hibernate.cfg.MappingCacheHolder -import org.grails.orm.hibernate.cfg.domainbinding.hibernate.GrailsHibernatePersistentEntity +import org.grails.orm.hibernate.cfg.domainbinding.hibernate.HibernatePersistentEntity import org.grails.orm.hibernate.cfg.domainbinding.util.MultiTenantFilterBinder import org.hibernate.boot.spi.MetadataBuildingContext import org.hibernate.mapping.RootClass @@ -35,13 +36,13 @@ class SubClassBinderSpec extends HibernateGormDatastoreSpec { def "test bindSubClass with no children"() { given: - def subEntity = Mock(GrailsHibernatePersistentEntity) + def subEntity = Mock(HibernatePersistentEntity) subEntity.getName() >> "Child" subEntity.getChildEntities("default") >> [] def rootClass = new RootClass(metadataBuildingContext) rootClass.setEntityName("Parent") rootClass.setJpaEntityName("Parent") - def subClass = new org.hibernate.mapping.SingleTableSubclass(rootClass, metadataBuildingContext) + def subClass = new SingleTableSubclass(rootClass, metadataBuildingContext) subClass.setEntityName("Child") subClass.setJpaEntityName("Child") @@ -57,8 +58,8 @@ class SubClassBinderSpec extends HibernateGormDatastoreSpec { def "test bindSubClass with children"() { given: - def subEntity = Mock(GrailsHibernatePersistentEntity) - def grandChildEntity = Mock(GrailsHibernatePersistentEntity) + def subEntity = Mock(HibernatePersistentEntity) + def grandChildEntity = Mock(HibernatePersistentEntity) subEntity.getName() >> "Child" grandChildEntity.getName() >> "GrandChild" subEntity.getChildEntities("default") >> [grandChildEntity] diff --git a/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/util/MultiTenantFilterBinderSpec.groovy b/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/util/MultiTenantFilterBinderSpec.groovy index 9a1543fc8f..3615afda8e 100644 --- a/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/util/MultiTenantFilterBinderSpec.groovy +++ b/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/util/MultiTenantFilterBinderSpec.groovy @@ -2,7 +2,7 @@ package org.grails.orm.hibernate.cfg.domainbinding.util import grails.gorm.specs.HibernateGormDatastoreSpec import org.grails.datastore.mapping.model.config.GormProperties -import org.grails.orm.hibernate.cfg.domainbinding.hibernate.GrailsHibernatePersistentEntity +import org.grails.orm.hibernate.cfg.domainbinding.hibernate.HibernatePersistentEntity import org.grails.orm.hibernate.cfg.domainbinding.hibernate.HibernatePersistentProperty import org.hibernate.boot.spi.InFlightMetadataCollector import org.hibernate.mapping.BasicValue @@ -32,7 +32,7 @@ class MultiTenantFilterBinderSpec extends HibernateGormDatastoreSpec { void "test add multi tenant filter to root class"() { given: - def entity = Mock(GrailsHibernatePersistentEntity) + def entity = Mock(HibernatePersistentEntity) def buildingContext = getGrailsDomainBinder().getMetadataBuildingContext() def persistentClass = new RootClass(buildingContext) @@ -69,7 +69,7 @@ class MultiTenantFilterBinderSpec extends HibernateGormDatastoreSpec { void "test skip filter for single table subclass (redundant)"() { given: - def entity = Mock(GrailsHibernatePersistentEntity) + def entity = Mock(HibernatePersistentEntity) def buildingContext = getGrailsDomainBinder().getMetadataBuildingContext() def rootClass = new RootClass(buildingContext) def table = new Table("ROOT_TABLE") @@ -103,7 +103,7 @@ class MultiTenantFilterBinderSpec extends HibernateGormDatastoreSpec { void "test skip filter for joined subclass if inherited (alias safety)"() { given: - def entity = Mock(GrailsHibernatePersistentEntity) + def entity = Mock(HibernatePersistentEntity) def buildingContext = getGrailsDomainBinder().getMetadataBuildingContext() def rootClass = new RootClass(buildingContext) def rootTable = new Table("ROOT_TABLE") @@ -141,7 +141,7 @@ class MultiTenantFilterBinderSpec extends HibernateGormDatastoreSpec { void "test add filter for union subclass (own table)"() { given: - def entity = Mock(GrailsHibernatePersistentEntity) + def entity = Mock(HibernatePersistentEntity) def buildingContext = getGrailsDomainBinder().getMetadataBuildingContext() def rootClass = new RootClass(buildingContext) def subTable = new Table("SUB_TABLE")
