This is an automated email from the ASF dual-hosted git repository.

borinquenkid pushed a commit to branch 8.0.x-hibernate7
in repository https://gitbox.apache.org/repos/asf/grails-core.git

commit a9d4b5fdbf27a7d7de692f7bb4c6f9edd9cc5756
Author: Walter Duque de Estrada <[email protected]>
AuthorDate: Sat Feb 14 13:34:26 2026 -0600

    Refactor defaultColumnNameFetcher in GrailsDomainBinder to be a local 
variable
    
    - Remove defaultColumnNameFetcher field and convert it to a local variable 
in the contribute method.
    - Update bindRoot, bindSubClass, createSubclassMapping, and 
addMultiTenantFilterIfNecessary to accept DefaultColumnNameFetcher as a 
parameter.
    - Update unit tests to pass DefaultColumnNameFetcher to the bindRoot method.
---
 .../orm/hibernate/cfg/GrailsDomainBinder.java      | 30 ++++++++++------------
 .../CollectionSecondPassBinderSpec.groovy          |  4 ++-
 .../domainbinding/GrailsPropertyBinderSpec.groovy  | 10 +++++---
 .../domainbinding/ListSecondPassBinderSpec.groovy  |  4 ++-
 .../domainbinding/MapSecondPassBinderSpec.groovy   |  4 ++-
 5 files changed, 29 insertions(+), 23 deletions(-)

diff --git 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/GrailsDomainBinder.java
 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/GrailsDomainBinder.java
index 7db17c814e..89ac71987d 100644
--- 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/GrailsDomainBinder.java
+++ 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/GrailsDomainBinder.java
@@ -139,7 +139,6 @@ public class GrailsDomainBinder
     private CompositeIdBinder compositeIdBinder;
     private IdentityBinder identityBinder;
     private VersionBinder versionBinder;
-    private DefaultColumnNameFetcher defaultColumnNameFetcher;
     private ColumnNameForPropertyAndPathFetcher 
columnNameForPropertyAndPathFetcher;
 
 
@@ -187,18 +186,17 @@ public class GrailsDomainBinder
 
     @Override
     public void contribute(AdditionalMappingContributions contributions, 
InFlightMetadataCollector metadataCollector, ResourceStreamLocator 
resourceStreamLocator, MetadataBuildingContext buildingContext) {
-        RootMappingDefaults rootMappingDefaults = null;
         this.metadataBuildingContext = new MetadataBuildingContextRootImpl(
                 "default",
                 metadataCollector.getBootstrapContext(),
                 metadataCollector.getMetadataBuildingOptions(),
                 metadataCollector
-                , rootMappingDefaults
+                , null
         );
         BackticksRemover backticksRemover = new BackticksRemover();
         PersistentEntityNamingStrategy namingStrategy = getNamingStrategy();
         JdbcEnvironment jdbcEnvironment = getJdbcEnvironment();
-        this.defaultColumnNameFetcher = new 
DefaultColumnNameFetcher(namingStrategy, backticksRemover);
+        DefaultColumnNameFetcher defaultColumnNameFetcher = new 
DefaultColumnNameFetcher(namingStrategy, backticksRemover);
         this.columnNameForPropertyAndPathFetcher = new 
ColumnNameForPropertyAndPathFetcher(namingStrategy, defaultColumnNameFetcher, 
backticksRemover);
         SimpleValueBinder simpleValueBinder = new 
SimpleValueBinder(namingStrategy, jdbcEnvironment);
         EnumTypeBinder enumTypeBinderToUse = enumTypeBinder != null ? 
enumTypeBinder : new EnumTypeBinder();
@@ -263,7 +261,7 @@ public class GrailsDomainBinder
                 .getHibernatePersistentEntities(dataSourceName)
                 .stream()
                 .filter(persistentEntity -> 
persistentEntity.forGrailsDomainMapping(dataSourceName))
-                .forEach(hibernatePersistentEntity -> 
bindRoot(hibernatePersistentEntity, metadataCollector, sessionFactoryName));
+                .forEach(hibernatePersistentEntity -> 
bindRoot(hibernatePersistentEntity, metadataCollector, sessionFactoryName, 
defaultColumnNameFetcher));
     }
 
 
@@ -294,7 +292,7 @@ public class GrailsDomainBinder
      * @param mappings    The Hibernate Mappings object
      * @param sessionFactoryBeanName  the session factory bean name
      */
-    protected void bindRoot(@Nonnull GrailsHibernatePersistentEntity 
entity,@Nonnull InFlightMetadataCollector mappings, String 
sessionFactoryBeanName) {
+    protected void bindRoot(@Nonnull GrailsHibernatePersistentEntity 
entity,@Nonnull InFlightMetadataCollector mappings, String 
sessionFactoryBeanName, DefaultColumnNameFetcher defaultColumnNameFetcher) {
         if (mappings.getEntityBinding(entity.getName()) != null) {
             LOG.info("[GrailsDomainBinder] Class [" + entity.getName() + "] is 
already mapped, skipping.. ");
             return;
@@ -311,10 +309,10 @@ public class GrailsDomainBinder
                 bindDiscriminatorProperty(root.getTable(), root, m);
             }
             // bind the sub classes
-            children.forEach(sub -> bindSubClass(sub, root, mappings, 
sessionFactoryBeanName, finalMapping,mappingCacheHolder ));
+            children.forEach(sub -> bindSubClass(sub, root, mappings, 
sessionFactoryBeanName, finalMapping,mappingCacheHolder, 
defaultColumnNameFetcher ));
         }
 
-        addMultiTenantFilterIfNecessary(entity, root, mappings);
+        addMultiTenantFilterIfNecessary(entity, root, mappings, 
defaultColumnNameFetcher);
 
         mappings.addEntityBinding(root);
     }
@@ -337,7 +335,7 @@ public class GrailsDomainBinder
      */
     private void addMultiTenantFilterIfNecessary(
             @Nonnull GrailsHibernatePersistentEntity entity, PersistentClass 
persistentClass,
-            @Nonnull InFlightMetadataCollector mappings) {
+            @Nonnull InFlightMetadataCollector mappings, 
DefaultColumnNameFetcher defaultColumnNameFetcher) {
 
         if (entity.isMultiTenant()) {
             TenantId tenantId = entity.getTenantId();
@@ -382,24 +380,24 @@ public class GrailsDomainBinder
                               PersistentClass parent,
                               @Nonnull InFlightMetadataCollector mappings,
                               String sessionFactoryBeanName
-                            , Mapping m, MappingCacheHolder 
mappingCacheHolder) {
+                            , Mapping m, MappingCacheHolder 
mappingCacheHolder, DefaultColumnNameFetcher defaultColumnNameFetcher) {
         mappingCacheHolder.cacheMapping(sub);
-        Subclass subClass = createSubclassMapping(sub, parent, mappings, 
sessionFactoryBeanName, m);
+        Subclass subClass = createSubclassMapping(sub, parent, mappings, 
sessionFactoryBeanName, m, defaultColumnNameFetcher);
 
 
         parent.addSubclass(subClass);
         mappings.addEntityBinding(subClass);
 
-        addMultiTenantFilterIfNecessary(sub, subClass, mappings);
+        addMultiTenantFilterIfNecessary(sub, subClass, mappings, 
defaultColumnNameFetcher);
 
         var children = sub.getChildEntities(dataSourceName);
         if (!children.isEmpty()) {
             // bind the sub classes
-            children.forEach(sub1 -> bindSubClass(sub1, subClass, mappings, 
sessionFactoryBeanName, m,mappingCacheHolder ));
+            children.forEach(sub1 -> bindSubClass(sub1, subClass, mappings, 
sessionFactoryBeanName, m,mappingCacheHolder, defaultColumnNameFetcher ));
         }
     }
 
-    private @NonNull Subclass createSubclassMapping(@NonNull 
GrailsHibernatePersistentEntity subEntity, PersistentClass parent, @NonNull 
InFlightMetadataCollector mappings, String sessionFactoryBeanName, Mapping m) {
+    private @NonNull Subclass createSubclassMapping(@NonNull 
GrailsHibernatePersistentEntity subEntity, PersistentClass parent, @NonNull 
InFlightMetadataCollector mappings, String sessionFactoryBeanName, Mapping m, 
DefaultColumnNameFetcher defaultColumnNameFetcher) {
         Subclass subClass;
         subEntity.configureDerivedProperties();
         if (!m.getTablePerHierarchy() && !m.isTablePerConcreteClass()) {
@@ -413,7 +411,7 @@ public class GrailsDomainBinder
         else {
             subClass = new SingleTableSubclass(parent, 
this.metadataBuildingContext);
             subClass.setDiscriminatorValue(subEntity.getDiscriminatorValue());
-            bindSubClass(subEntity, subClass, mappings, 
sessionFactoryBeanName);
+            bindSubClass(subEntity, subClass, mappings, 
sessionFactoryBeanName, defaultColumnNameFetcher);
         }
         
subClass.setBatchSize(Optional.ofNullable(m.getBatchSize()).orElse(-1));
         subClass.setDynamicUpdate(m.getDynamicUpdate());
@@ -512,7 +510,7 @@ public class GrailsDomainBinder
      * @param mappings The mappings instance
      */
     private void bindSubClass(@Nonnull GrailsHibernatePersistentEntity sub, 
Subclass subClass, @Nonnull InFlightMetadataCollector mappings,
-                                String sessionFactoryBeanName) {
+                                String sessionFactoryBeanName, 
DefaultColumnNameFetcher defaultColumnNameFetcher) {
         classBinding.bindClass(sub, subClass, mappings);
 
         if (LOG.isDebugEnabled())
diff --git 
a/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/CollectionSecondPassBinderSpec.groovy
 
b/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/CollectionSecondPassBinderSpec.groovy
index e1df39f439..6af22f62d1 100644
--- 
a/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/CollectionSecondPassBinderSpec.groovy
+++ 
b/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/CollectionSecondPassBinderSpec.groovy
@@ -4,6 +4,8 @@ import grails.gorm.annotation.Entity
 import grails.gorm.specs.HibernateGormDatastoreSpec
 import org.grails.orm.hibernate.cfg.GrailsHibernatePersistentEntity
 import 
org.grails.orm.hibernate.cfg.domainbinding.hibernate.HibernateToManyProperty
+import org.grails.orm.hibernate.cfg.domainbinding.util.BackticksRemover
+import org.grails.orm.hibernate.cfg.domainbinding.util.DefaultColumnNameFetcher
 
 import org.hibernate.mapping.RootClass
 
@@ -40,7 +42,7 @@ class CollectionSecondPassBinderSpec extends 
HibernateGormDatastoreSpec {
         def bookEntity = getPersistentEntity(Book) as 
GrailsHibernatePersistentEntity
 
         // Register referenced entity in Hibernate
-        binder.bindRoot(bookEntity, collector, "sessionFactory")
+        binder.bindRoot(bookEntity, collector, "sessionFactory", new 
DefaultColumnNameFetcher(binder.getNamingStrategy(), new BackticksRemover()))
 
         // Manually create RootClass for the main entity
         def rootClass = new RootClass(binder.getMetadataBuildingContext())
diff --git 
a/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/GrailsPropertyBinderSpec.groovy
 
b/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/GrailsPropertyBinderSpec.groovy
index 18357514fd..dba76ebbe5 100644
--- 
a/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/GrailsPropertyBinderSpec.groovy
+++ 
b/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/GrailsPropertyBinderSpec.groovy
@@ -18,7 +18,9 @@ import 
org.grails.orm.hibernate.cfg.domainbinding.binder.GrailsPropertyBinder
 import org.grails.orm.hibernate.cfg.domainbinding.binder.ManyToOneBinder
 import org.grails.orm.hibernate.cfg.domainbinding.binder.OneToOneBinder
 import org.grails.orm.hibernate.cfg.domainbinding.binder.SimpleValueBinder
+import org.grails.orm.hibernate.cfg.domainbinding.util.BackticksRemover
 import 
org.grails.orm.hibernate.cfg.domainbinding.util.ColumnNameForPropertyAndPathFetcher
+import org.grails.orm.hibernate.cfg.domainbinding.util.DefaultColumnNameFetcher
 import org.grails.orm.hibernate.cfg.domainbinding.util.PropertyFromValueCreator
 
 class GrailsPropertyBinderSpec extends HibernateGormDatastoreSpec {
@@ -166,7 +168,7 @@ class GrailsPropertyBinderSpec extends 
HibernateGormDatastoreSpec {
         def authorEntity = createPersistentEntity(ListAuthor)
 
         // Register referenced entity in Hibernate
-        binder.bindRoot(bookEntity, collector, "sessionFactory")
+        binder.bindRoot(bookEntity, collector, "sessionFactory", new 
DefaultColumnNameFetcher(binder.getNamingStrategy(), new BackticksRemover()))
 
         // Manually create RootClass for the main entity to avoid duplicate 
property binding
         def rootClass = new RootClass(binder.getMetadataBuildingContext())
@@ -206,7 +208,7 @@ class GrailsPropertyBinderSpec extends 
HibernateGormDatastoreSpec {
         def authorEntity = createPersistentEntity(MapAuthor)
 
         // Register referenced entity in Hibernate
-        binder.bindRoot(bookEntity, collector, "sessionFactory")
+        binder.bindRoot(bookEntity, collector, "sessionFactory", new 
DefaultColumnNameFetcher(binder.getNamingStrategy(), new BackticksRemover()))
 
         // Manually create RootClass for the main entity
         def rootClass = new RootClass(binder.getMetadataBuildingContext())
@@ -243,7 +245,7 @@ class GrailsPropertyBinderSpec extends 
HibernateGormDatastoreSpec {
         def personEntity = 
getPersistentEntity(org.apache.grails.data.testing.tck.domains.PersonWithCompositeKey)
 as GrailsHibernatePersistentEntity
         
         when:
-        binder.bindRoot(personEntity, collector, "sessionFactory")
+        binder.bindRoot(personEntity, collector, "sessionFactory", new 
DefaultColumnNameFetcher(binder.getNamingStrategy(), new BackticksRemover()))
         def rootClass = collector.getEntityBinding(personEntity.name)
 
         then:
@@ -266,7 +268,7 @@ class GrailsPropertyBinderSpec extends 
HibernateGormDatastoreSpec {
         def bookEntity = createPersistentEntity(BookForOneToOne) as 
GrailsHibernatePersistentEntity
 
         // Register referenced entity in Hibernate
-        binder.bindRoot(bookEntity, collector, "sessionFactory")
+        binder.bindRoot(bookEntity, collector, "sessionFactory", new 
DefaultColumnNameFetcher(binder.getNamingStrategy(), new BackticksRemover()))
 
         // Manually create RootClass for the main entity (AuthorWithOneToOne)
         def rootClass = new RootClass(binder.getMetadataBuildingContext())
diff --git 
a/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/ListSecondPassBinderSpec.groovy
 
b/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/ListSecondPassBinderSpec.groovy
index f8ceee2d9b..66d07c71ba 100644
--- 
a/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/ListSecondPassBinderSpec.groovy
+++ 
b/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/ListSecondPassBinderSpec.groovy
@@ -4,6 +4,8 @@ import grails.gorm.annotation.Entity
 import grails.gorm.specs.HibernateGormDatastoreSpec
 import org.grails.orm.hibernate.cfg.GrailsHibernatePersistentEntity
 import 
org.grails.orm.hibernate.cfg.domainbinding.hibernate.HibernateToManyProperty
+import org.grails.orm.hibernate.cfg.domainbinding.util.BackticksRemover
+import org.grails.orm.hibernate.cfg.domainbinding.util.DefaultColumnNameFetcher
 
 import org.hibernate.mapping.RootClass
 import org.hibernate.mapping.SimpleValue
@@ -43,7 +45,7 @@ class ListSecondPassBinderSpec extends 
HibernateGormDatastoreSpec {
         def bookEntity = getPersistentEntity(ListBinderBook) as 
GrailsHibernatePersistentEntity
 
         // Register referenced entity in Hibernate
-        binder.bindRoot(bookEntity, collector, "sessionFactory")
+        binder.bindRoot(bookEntity, collector, "sessionFactory", new 
DefaultColumnNameFetcher(binder.getNamingStrategy(), new BackticksRemover()))
 
         // Manually create RootClass for the main entity
         def rootClass = new RootClass(binder.getMetadataBuildingContext())
diff --git 
a/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/MapSecondPassBinderSpec.groovy
 
b/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/MapSecondPassBinderSpec.groovy
index e4eccb37c9..7d58f13e90 100644
--- 
a/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/MapSecondPassBinderSpec.groovy
+++ 
b/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/MapSecondPassBinderSpec.groovy
@@ -4,6 +4,8 @@ import grails.gorm.annotation.Entity
 import grails.gorm.specs.HibernateGormDatastoreSpec
 import org.grails.orm.hibernate.cfg.GrailsHibernatePersistentEntity
 import 
org.grails.orm.hibernate.cfg.domainbinding.hibernate.HibernateToManyProperty
+import org.grails.orm.hibernate.cfg.domainbinding.util.BackticksRemover
+import org.grails.orm.hibernate.cfg.domainbinding.util.DefaultColumnNameFetcher
 
 import org.hibernate.mapping.RootClass
 import org.hibernate.mapping.SimpleValue
@@ -43,7 +45,7 @@ class MapSecondPassBinderSpec extends 
HibernateGormDatastoreSpec {
         def bookEntity = getPersistentEntity(MapBookBinder) as 
GrailsHibernatePersistentEntity
 
         // Register referenced entity in Hibernate
-        binder.bindRoot(bookEntity, collector, "sessionFactory")
+        binder.bindRoot(bookEntity, collector, "sessionFactory", new 
DefaultColumnNameFetcher(binder.getNamingStrategy(), new BackticksRemover()))
 
         // Manually create RootClass for the main entity
         def rootClass = new RootClass(binder.getMetadataBuildingContext())

Reply via email to