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 f23bc9424b53088f68a13fa290c88e0c38cecc16 Author: Walter Duque de Estrada <[email protected]> AuthorDate: Sat Mar 14 11:32:20 2026 -0500 hibernate 7: clean up ClassPropertiesBinder.bindClassProperties --- .../binder/ClassPropertiesBinder.java | 11 +++++----- .../domainbinding/binder/GrailsDomainBinder.java | 1 - .../cfg/domainbinding/binder/RootBinder.java | 3 --- .../RootPersistentClassCommonValuesBinder.java | 24 +++++++++++----------- .../binder/SubclassMappingBinder.java | 6 +++--- .../binder/ClassPropertiesBinderSpec.groovy | 11 ++++++---- ...ootPersistentClassCommonValuesBinderSpec.groovy | 5 +++-- .../binder/SubclassMappingBinderSpec.groovy | 17 +++++++++------ 8 files changed, 42 insertions(+), 36 deletions(-) diff --git a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/ClassPropertiesBinder.java b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/ClassPropertiesBinder.java index 0a330982f2..5d753eddce 100644 --- a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/ClassPropertiesBinder.java +++ b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/ClassPropertiesBinder.java @@ -26,6 +26,7 @@ import org.hibernate.mapping.Table; import org.hibernate.mapping.Value; 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.grails.orm.hibernate.cfg.domainbinding.util.PropertyFromValueCreator; @@ -58,18 +59,18 @@ public class ClassPropertiesBinder { this(grailsPropertyBinder, propertyFromValueCreator, new NaturalIdentifierBinder()); } - public void bindClassProperties( - @Nonnull GrailsHibernatePersistentEntity domainClass, PersistentClass persistentClass) { + public void bindClassProperties(HibernatePersistentEntity hibernatePersistentEntity) { + PersistentClass persistentClass = hibernatePersistentEntity.getPersistentClass(); @Nonnull Table table = getTable(persistentClass); - table.setComment(domainClass.getComment()); + table.setComment(hibernatePersistentEntity.getComment()); - for (HibernatePersistentProperty currentGrailsProp : domainClass.getPersistentPropertiesToBind()) { + for (HibernatePersistentProperty currentGrailsProp : hibernatePersistentEntity.getPersistentPropertiesToBind()) { Value value = grailsPropertyBinder.bindProperty( persistentClass, table, GrailsDomainBinder.EMPTY_PATH, null, currentGrailsProp); persistentClass.addProperty(propertyFromValueCreator.createProperty(value, currentGrailsProp)); } - naturalIdentifierBinder.bindNaturalIdentifier(domainClass, persistentClass); + naturalIdentifierBinder.bindNaturalIdentifier(hibernatePersistentEntity, persistentClass); } @Nonnull 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 55ec7a0b33..a097be1eef 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 @@ -36,7 +36,6 @@ import org.grails.orm.hibernate.cfg.HibernateMappingContext; 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; 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 27221cdece..24125be882 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 @@ -18,8 +18,6 @@ */ package org.grails.orm.hibernate.cfg.domainbinding.binder; -import java.util.Collection; -import java.util.List; import java.util.stream.Stream; import jakarta.annotation.Nonnull; @@ -32,7 +30,6 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; 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; diff --git a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/RootPersistentClassCommonValuesBinder.java b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/RootPersistentClassCommonValuesBinder.java index d929459d96..e515fd9bc9 100644 --- a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/RootPersistentClassCommonValuesBinder.java +++ b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/RootPersistentClassCommonValuesBinder.java @@ -60,15 +60,15 @@ public class RootPersistentClassCommonValuesBinder { this.mappings = mappings; } - public RootClass bindRoot(@Nonnull HibernatePersistentEntity domainClass) { + public RootClass bindRoot(@Nonnull HibernatePersistentEntity hibernatePersistentEntity) { RootClass root = new RootClass(this.metadataBuildingContext); - classBinder.bindClass(domainClass, root); + classBinder.bindClass(hibernatePersistentEntity, root); // get the schema and catalog names from the configuration - Mapping gormMapping = domainClass.getMappedForm(); + Mapping gormMapping = hibernatePersistentEntity.getMappedForm(); - domainClass.configureDerivedProperties(); + hibernatePersistentEntity.configureDerivedProperties(); CacheConfig cc = gormMapping.getCache(); if (cc != null && cc.getEnabled()) { root.setCacheConcurrencyStrategy(cc.getUsage().toString()); @@ -79,30 +79,30 @@ public class RootPersistentClassCommonValuesBinder { root.setLazyPropertiesCacheable(!"non-lazy".equalsIgnoreCase(cc.getInclude().toString())); } - var schema = domainClass.getSchema(mappings); + var schema = hibernatePersistentEntity.getSchema(mappings); - var catalog = domainClass.getCatalog(mappings); + var catalog = hibernatePersistentEntity.getCatalog(mappings); // create the table var table = mappings.addTable( schema, catalog, - domainClass.getTableName(namingStrategy), + hibernatePersistentEntity.getTableName(namingStrategy), null, - domainClass.isTableAbstract(), + hibernatePersistentEntity.isTableAbstract(), metadataBuildingContext); root.setTable(table); if (LOG.isDebugEnabled()) { LOG.debug("[GrailsDomainBinder] Mapping Grails domain class: " - + domainClass.getName() + + hibernatePersistentEntity.getName() + " -> " + root.getTable().getName()); } - identityBinder.bindIdentity(domainClass, root); - versionBinder.bindVersion(domainClass.getVersion(), root); + identityBinder.bindIdentity(hibernatePersistentEntity, root); + versionBinder.bindVersion(hibernatePersistentEntity.getVersion(), root); root.createPrimaryKey(); - classPropertiesBinder.bindClassProperties(domainClass, root); + classPropertiesBinder.bindClassProperties(hibernatePersistentEntity); return root; } diff --git a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/SubclassMappingBinder.java b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/SubclassMappingBinder.java index 069c3bd3c3..f23f9072ff 100644 --- a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/SubclassMappingBinder.java +++ b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/SubclassMappingBinder.java @@ -27,6 +27,7 @@ import org.hibernate.mapping.Subclass; import org.grails.orm.hibernate.cfg.GrailsHibernateUtil; import org.grails.orm.hibernate.cfg.Mapping; import org.grails.orm.hibernate.cfg.domainbinding.hibernate.GrailsHibernatePersistentEntity; +import org.grails.orm.hibernate.cfg.domainbinding.hibernate.HibernatePersistentEntity; public class SubclassMappingBinder { @@ -46,8 +47,7 @@ public class SubclassMappingBinder { this.classPropertiesBinder = classPropertiesBinder; } - public @NonNull Subclass createSubclassMapping( - @NonNull GrailsHibernatePersistentEntity subEntity, PersistentClass parent) { + public @NonNull Subclass createSubclassMapping(HibernatePersistentEntity subEntity, PersistentClass parent) { Subclass subClass; subEntity.configureDerivedProperties(); Mapping m = subEntity.getMappedForm(); @@ -66,7 +66,7 @@ public class SubclassMappingBinder { subClass.setAbstract(subEntity.isAbstract()); subClass.setEntityName(subEntity.getName()); subClass.setJpaEntityName(GrailsHibernateUtil.unqualify(subEntity.getName())); - classPropertiesBinder.bindClassProperties(subEntity, subClass); + classPropertiesBinder.bindClassProperties(subEntity); return subClass; } } diff --git a/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/ClassPropertiesBinderSpec.groovy b/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/ClassPropertiesBinderSpec.groovy index cda787c22b..51bd749cba 100644 --- a/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/ClassPropertiesBinderSpec.groovy +++ b/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/ClassPropertiesBinderSpec.groovy @@ -1,7 +1,9 @@ package org.grails.orm.hibernate.cfg.domainbinding.binder +import org.hibernate.mapping.Table + import grails.gorm.specs.HibernateGormDatastoreSpec -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.grails.orm.hibernate.cfg.Mapping import org.grails.orm.hibernate.cfg.domainbinding.util.PropertyFromValueCreator @@ -19,9 +21,10 @@ class ClassPropertiesBinderSpec extends HibernateGormDatastoreSpec { def naturalIdentifierBinder = Mock(NaturalIdentifierBinder) def binder = new ClassPropertiesBinder(grailsPropertyBinder, propertyFromValueCreator, naturalIdentifierBinder) - def domainClass = Mock(GrailsHibernatePersistentEntity) + def domainClass = Mock(HibernatePersistentEntity) def persistentClass = new RootClass(getGrailsDomainBinder().getMetadataBuildingContext()) - persistentClass.setTable(new org.hibernate.mapping.Table("test")) + persistentClass.setTable(new Table("test")) + domainClass.getPersistentClass() >> persistentClass def mappings = Mock(InFlightMetadataCollector) def sessionFactoryBeanName = "sessionFactory" @@ -43,7 +46,7 @@ class ClassPropertiesBinderSpec extends HibernateGormDatastoreSpec { domainClass.getMappedForm() >> mapping when: - binder.bindClassProperties(domainClass, persistentClass) + binder.bindClassProperties(domainClass) then: 1 * grailsPropertyBinder.bindProperty(persistentClass, persistentClass.table, GrailsDomainBinder.EMPTY_PATH, null, prop1) >> value1 diff --git a/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/RootPersistentClassCommonValuesBinderSpec.groovy b/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/RootPersistentClassCommonValuesBinderSpec.groovy index 7c50d612a0..fbe30d86b7 100644 --- a/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/RootPersistentClassCommonValuesBinderSpec.groovy +++ b/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/RootPersistentClassCommonValuesBinderSpec.groovy @@ -5,6 +5,7 @@ import grails.gorm.specs.HibernateGormDatastoreSpec import org.hibernate.mapping.RootClass import org.hibernate.boot.spi.MetadataBuildingContext import org.grails.orm.hibernate.cfg.PersistentEntityNamingStrategy +import org.grails.orm.hibernate.cfg.domainbinding.hibernate.HibernatePersistentEntity import org.grails.orm.hibernate.cfg.domainbinding.util.BasicValueIdCreator import org.hibernate.mapping.BasicValue @@ -49,14 +50,14 @@ class RootPersistentClassCommonValuesBinderSpec extends HibernateGormDatastoreSp void "test bindRootPersistentClassCommonValues binds properties correctly"() { given: - def entity = createPersistentEntity(TestEntity) + def entity = createPersistentEntity(TestEntity) as HibernatePersistentEntity def mappings = getCollector() when: RootClass rootClass = binder.bindRoot(entity) then: - 1 * classPropertiesBinder.bindClassProperties(entity, _) + 1 * classPropertiesBinder.bindClassProperties(entity) rootClass != null rootClass.getEntityName() == TestEntity.name rootClass.isAbstract() == false diff --git a/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/SubclassMappingBinderSpec.groovy b/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/SubclassMappingBinderSpec.groovy index 7dab314e0b..a05b205e94 100644 --- a/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/SubclassMappingBinderSpec.groovy +++ b/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/SubclassMappingBinderSpec.groovy @@ -10,6 +10,8 @@ import org.hibernate.mapping.SingleTableSubclass import org.hibernate.mapping.Subclass import org.hibernate.mapping.UnionSubclass +import org.grails.orm.hibernate.cfg.domainbinding.hibernate.HibernatePersistentEntity + class SubclassMappingBinderSpec extends HibernateGormDatastoreSpec { SubclassMappingBinder binder @@ -38,7 +40,8 @@ class SubclassMappingBinderSpec extends HibernateGormDatastoreSpec { def "test createSubclassMapping for single table inheritance"() { given: createPersistentEntity(SMBSSingleSuper) - def subEntity = createPersistentEntity(SMBSSingleSub) + // Cast the created persistent entity to HibernatePersistentEntity + def subEntity = createPersistentEntity(SMBSSingleSub) as HibernatePersistentEntity def rootClass = new RootClass(metadataBuildingContext) rootClass.setEntityName(SMBSSingleSuper.name) rootClass.setJpaEntityName(SMBSSingleSuper.name) @@ -54,7 +57,7 @@ class SubclassMappingBinderSpec extends HibernateGormDatastoreSpec { s.setEntityName(subEntity.getName()) s } - 1 * classPropertiesBinder.bindClassProperties(subEntity, _ as Subclass) + 1 * classPropertiesBinder.bindClassProperties(subEntity) subClass instanceof SingleTableSubclass subClass.getEntityName() == SMBSSingleSub.name } @@ -62,7 +65,8 @@ class SubclassMappingBinderSpec extends HibernateGormDatastoreSpec { def "test createSubclassMapping for joined table inheritance"() { given: createPersistentEntity(SMBSJoinedSuper) - def subEntity = createPersistentEntity(SMBSJoinedSub) + // Cast the created persistent entity to HibernatePersistentEntity + def subEntity = createPersistentEntity(SMBSJoinedSub) as HibernatePersistentEntity def rootClass = new RootClass(metadataBuildingContext) rootClass.setEntityName(SMBSJoinedSuper.name) rootClass.setJpaEntityName(SMBSJoinedSuper.name) @@ -78,7 +82,7 @@ class SubclassMappingBinderSpec extends HibernateGormDatastoreSpec { s.setEntityName(subEntity.getName()) s } - 1 * classPropertiesBinder.bindClassProperties(subEntity, _ as Subclass) + 1 * classPropertiesBinder.bindClassProperties(subEntity) subClass instanceof JoinedSubclass subClass.getEntityName() == SMBSJoinedSub.name } @@ -86,7 +90,8 @@ class SubclassMappingBinderSpec extends HibernateGormDatastoreSpec { def "test createSubclassMapping for table per concrete class inheritance"() { given: createPersistentEntity(SMBSUnionSuper) - def subEntity = createPersistentEntity(SMBSUnionSub) + // Cast the created persistent entity to HibernatePersistentEntity + def subEntity = createPersistentEntity(SMBSUnionSub) as HibernatePersistentEntity def rootClass = new RootClass(metadataBuildingContext) rootClass.setEntityName(SMBSUnionSuper.name) rootClass.setJpaEntityName(SMBSUnionSuper.name) @@ -102,7 +107,7 @@ class SubclassMappingBinderSpec extends HibernateGormDatastoreSpec { s.setEntityName(subEntity.getName()) s } - 1 * classPropertiesBinder.bindClassProperties(subEntity, _ as Subclass) + 1 * classPropertiesBinder.bindClassProperties(subEntity) subClass instanceof UnionSubclass subClass.getEntityName() == SMBSUnionSub.name }
