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 5c008a3b92ea0b28fa3a9ba208214dee6b577b70
Author: Walter Duque de Estrada <[email protected]>
AuthorDate: Mon Feb 16 01:03:33 2026 -0600

    Refactor ManyToOneBinder to internally manage ManyToOne instantiation
    
    - Add MetadataBuildingContext dependency to ManyToOneBinder.
    - Refactor bindManyToOne to create and return ManyToOne instances.
    - Update ComponentBinder, GrailsPropertyBinder, and 
CollectionSecondPassBinder to use the updated signature.
    - Simplify CollectionSecondPassBinder by removing redundant bindManyToMany 
helper.
    - Synchronize all test specifications (CollectionBinderSpec, 
ManyToOneBinderSpec, etc.) with the new binder constructors and method 
signatures.
---
 .../orm/hibernate/cfg/GrailsDomainBinder.java      |  2 +-
 .../cfg/domainbinding/binder/CollectionBinder.java |  2 +-
 .../cfg/domainbinding/binder/ComponentBinder.java  |  6 ++--
 .../domainbinding/binder/GrailsPropertyBinder.java | 24 +-------------
 .../cfg/domainbinding/binder/ManyToOneBinder.java  | 17 +++++++---
 .../secondpass/CollectionSecondPassBinder.java     | 11 ++-----
 .../cfg/domainbinding/CollectionBinderSpec.groovy  |  4 +--
 .../CollectionSecondPassBinderSpec.groovy          |  4 +--
 .../cfg/domainbinding/ComponentBinderSpec.groovy   |  3 +-
 .../domainbinding/GrailsPropertyBinderSpec.groovy  |  2 +-
 .../domainbinding/ListSecondPassBinderSpec.groovy  |  4 +--
 .../cfg/domainbinding/ManyToOneBinderSpec.groovy   | 38 ++++++++++------------
 .../domainbinding/MapSecondPassBinderSpec.groovy   |  4 +--
 13 files changed, 49 insertions(+), 72 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 d8c716a554..e733e1c43a 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
@@ -171,7 +171,7 @@ public class GrailsDomainBinder
                 simpleValueBinder
         );
         OneToOneBinder oneToOneBinder = new OneToOneBinder(namingStrategy, 
simpleValueBinder);
-        ManyToOneBinder manyToOneBinder = new ManyToOneBinder(namingStrategy, 
simpleValueBinder, new ManyToOneValuesBinder(), 
compositeIdentifierToManyToOneBinder, simpleValueColumnFetcher);
+        ManyToOneBinder manyToOneBinder = new 
ManyToOneBinder(metadataBuildingContext, namingStrategy, simpleValueBinder, new 
ManyToOneValuesBinder(), compositeIdentifierToManyToOneBinder, 
simpleValueColumnFetcher);
 
         CollectionBinder collectionBinder = new CollectionBinder(
                 metadataBuildingContext,
diff --git 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/CollectionBinder.java
 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/CollectionBinder.java
index 9756629345..5d0005ddab 100644
--- 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/CollectionBinder.java
+++ 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/CollectionBinder.java
@@ -73,7 +73,7 @@ public class CollectionBinder {
         this(metadataBuildingContext, namingStrategy, jdbcEnvironment,
                 new SimpleValueBinder(namingStrategy, jdbcEnvironment),
                 new EnumTypeBinder(),
-                new ManyToOneBinder(namingStrategy, jdbcEnvironment),
+                new ManyToOneBinder(metadataBuildingContext, namingStrategy, 
jdbcEnvironment),
                 new CompositeIdentifierToManyToOneBinder(namingStrategy, 
jdbcEnvironment),
                 new SimpleValueColumnFetcher());
     }
diff --git 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/ComponentBinder.java
 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/ComponentBinder.java
index 61c481924e..db977a1ffd 100644
--- 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/ComponentBinder.java
+++ 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/ComponentBinder.java
@@ -119,8 +119,7 @@ public class ComponentBinder {
             if (LOG.isDebugEnabled())
                 LOG.debug("[GrailsDomainBinder] Binding property [" + 
currentGrailsProp.getName() + "] as ManyToOne");
 
-            value = new ManyToOne(metadataBuildingContext, table);
-            manyToOneBinder.bindManyToOne((Association) currentGrailsProp, 
(ManyToOne) value, path);
+            value = manyToOneBinder.bindManyToOne((Association) 
currentGrailsProp, table, path);
         } else if (currentGrailsProp instanceof 
org.grails.datastore.mapping.model.types.OneToOne association) {
             if (LOG.isDebugEnabled())
                 LOG.debug("[GrailsDomainBinder] Binding property [" + 
currentGrailsProp.getName() + "] as OneToOne");
@@ -130,8 +129,7 @@ public class ComponentBinder {
                 
oneToOneBinder.bindOneToOne((org.grails.datastore.mapping.model.types.OneToOne) 
currentGrailsProp, (OneToOne) value, path);
             }
             else {
-                value = new ManyToOne(metadataBuildingContext, table);
-                manyToOneBinder.bindManyToOne((Association) currentGrailsProp, 
(ManyToOne) value, path);
+                value = manyToOneBinder.bindManyToOne((Association) 
currentGrailsProp, table, path);
             }
         }
         else if (currentGrailsProp instanceof HibernateEmbeddedProperty 
embedded) {
diff --git 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/GrailsPropertyBinder.java
 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/GrailsPropertyBinder.java
index 744b3f3fba..f14ce2656c 100644
--- 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/GrailsPropertyBinder.java
+++ 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/GrailsPropertyBinder.java
@@ -70,27 +70,6 @@ public class GrailsPropertyBinder {
         this.propertyFromValueCreator = propertyFromValueCreator;
     }
 
-    public GrailsPropertyBinder(
-            MetadataBuildingContext metadataBuildingContext,
-            PersistentEntityNamingStrategy namingStrategy,
-            CollectionHolder collectionHolder,
-            EnumTypeBinder enumTypeBinder,
-            ComponentBinder componentBinder,
-            CollectionBinder collectionBinder,
-            PropertyFromValueCreator propertyFromValueCreator) {
-        this(metadataBuildingContext,
-                namingStrategy,
-                collectionHolder,
-                enumTypeBinder,
-                componentBinder,
-                collectionBinder,
-                new SimpleValueBinder(namingStrategy, 
((NamingStrategyWrapper)namingStrategy).getJdbcEnvironment()),
-                new ColumnNameForPropertyAndPathFetcher(namingStrategy, new 
DefaultColumnNameFetcher(namingStrategy), new BackticksRemover()),
-                new OneToOneBinder(namingStrategy, 
((NamingStrategyWrapper)namingStrategy).getJdbcEnvironment()),
-                new ManyToOneBinder(namingStrategy, 
((NamingStrategyWrapper)namingStrategy).getJdbcEnvironment()),
-                propertyFromValueCreator);
-    }
-
     public Value bindProperty(PersistentClass persistentClass
             , @Nonnull GrailsHibernatePersistentProperty currentGrailsProp
             , @Nonnull InFlightMetadataCollector mappings) {
@@ -134,8 +113,7 @@ public class GrailsPropertyBinder {
             value = new OneToOne(metadataBuildingContext, table, 
persistentClass);
             
oneToOneBinder.bindOneToOne((org.grails.datastore.mapping.model.types.OneToOne)currentGrailsProp,
 (OneToOne)value, EMPTY_PATH);
         } else if(currentGrailsProp.isHibernateManyToOne()) {
-            value = new ManyToOne(metadataBuildingContext, table);
-            manyToOneBinder.bindManyToOne((Association)currentGrailsProp, 
(ManyToOne)value, EMPTY_PATH);
+            value = 
manyToOneBinder.bindManyToOne((Association)currentGrailsProp, table, 
EMPTY_PATH);
         }
         else if (currentGrailsProp instanceof HibernateEmbeddedProperty 
embedded) {
             value = componentBinder.bindComponent(persistentClass, embedded, 
mappings);
diff --git 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/ManyToOneBinder.java
 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/ManyToOneBinder.java
index 8fbf2521c2..86180cf4ee 100644
--- 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/ManyToOneBinder.java
+++ 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/ManyToOneBinder.java
@@ -1,6 +1,7 @@
 package org.grails.orm.hibernate.cfg.domainbinding.binder;
 
 import org.hibernate.MappingException;
+import org.hibernate.boot.spi.MetadataBuildingContext;
 import org.hibernate.engine.jdbc.env.spi.JdbcEnvironment;
 import org.hibernate.mapping.Column;
 import org.hibernate.mapping.ManyToOne;
@@ -23,17 +24,20 @@ import static 
org.grails.orm.hibernate.cfg.GrailsDomainBinder.FOREIGN_KEY_SUFFIX
 
 public class ManyToOneBinder {
 
+    private final MetadataBuildingContext metadataBuildingContext;
     private final PersistentEntityNamingStrategy namingStrategy;
     private final SimpleValueBinder simpleValueBinder;
     private final ManyToOneValuesBinder manyToOneValuesBinder;
     private final CompositeIdentifierToManyToOneBinder 
compositeIdentifierToManyToOneBinder;
     private final SimpleValueColumnFetcher simpleValueColumnFetcher;
 
-    public ManyToOneBinder(PersistentEntityNamingStrategy namingStrategy
+    public ManyToOneBinder(MetadataBuildingContext metadataBuildingContext
+            , PersistentEntityNamingStrategy namingStrategy
             , SimpleValueBinder simpleValueBinder
             , ManyToOneValuesBinder manyToOneValuesBinder
             , CompositeIdentifierToManyToOneBinder 
compositeIdentifierToManyToOneBinder
             , SimpleValueColumnFetcher simpleValueColumnFetcher) {
+        this.metadataBuildingContext = metadataBuildingContext;
         this.namingStrategy = namingStrategy;
         this.simpleValueBinder =simpleValueBinder;
         this.manyToOneValuesBinder = manyToOneValuesBinder;
@@ -41,8 +45,9 @@ public class ManyToOneBinder {
         this.simpleValueColumnFetcher = simpleValueColumnFetcher;
     }
 
-    public ManyToOneBinder(PersistentEntityNamingStrategy namingStrategy, 
JdbcEnvironment jdbcEnvironment) {
-        this(namingStrategy,
+    public ManyToOneBinder(MetadataBuildingContext metadataBuildingContext, 
PersistentEntityNamingStrategy namingStrategy, JdbcEnvironment jdbcEnvironment) 
{
+        this(metadataBuildingContext,
+                namingStrategy,
                 new SimpleValueBinder(namingStrategy, jdbcEnvironment),
                 new ManyToOneValuesBinder(),
                 new CompositeIdentifierToManyToOneBinder(namingStrategy, 
jdbcEnvironment),
@@ -55,9 +60,10 @@ public class ManyToOneBinder {
      *
      */
     @SuppressWarnings("unchecked")
-    public void bindManyToOne(Association property
-            , ManyToOne manyToOne
+    public ManyToOne bindManyToOne(Association property
+            , org.hibernate.mapping.Table table
             ,String path) {
+        ManyToOne manyToOne = new ManyToOne(metadataBuildingContext, table);
         GrailsHibernatePersistentProperty hibernateProperty = 
(GrailsHibernatePersistentProperty) property;
         manyToOneValuesBinder.bindManyToOneValues(property, manyToOne);
         GrailsHibernatePersistentEntity refDomainClass = 
(GrailsHibernatePersistentEntity) (property instanceof 
HibernateManyToManyProperty ? property.getOwner() : 
property.getAssociatedEntity());
@@ -110,5 +116,6 @@ public class ManyToOneBinder {
                 }
             }
         }
+        return manyToOne;
     }
 }
diff --git 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/secondpass/CollectionSecondPassBinder.java
 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/secondpass/CollectionSecondPassBinder.java
index 84bffa8bb3..9176d499ab 100644
--- 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/secondpass/CollectionSecondPassBinder.java
+++ 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/secondpass/CollectionSecondPassBinder.java
@@ -82,7 +82,7 @@ public class CollectionSecondPassBinder {
         this(metadataBuildingContext, namingStrategy, jdbcEnvironment,
                 new SimpleValueBinder(namingStrategy, jdbcEnvironment),
                 new EnumTypeBinder(),
-                new ManyToOneBinder(namingStrategy, jdbcEnvironment),
+                new ManyToOneBinder(metadataBuildingContext, namingStrategy, 
jdbcEnvironment),
                 new CompositeIdentifierToManyToOneBinder(namingStrategy, 
jdbcEnvironment),
                 new SimpleValueColumnFetcher());
     }
@@ -213,8 +213,8 @@ public class CollectionSecondPassBinder {
             if (property.isBidirectional()) {
                 if (LOG.isDebugEnabled())
                     LOG.debug("[CollectionSecondPassBinder] Mapping other side 
" + otherSide.getHibernateOwner().getName() + "." + otherSide.getName() + " -> 
" + collection.getCollectionTable().getName() + " as ManyToOne");
-                ManyToOne element = new ManyToOne(metadataBuildingContext, 
collection.getCollectionTable());
-                bindManyToMany((Association)otherSide, element);
+                ManyToOne element = 
manyToOneBinder.bindManyToOne((Association)otherSide, 
collection.getCollectionTable(), EMPTY_PATH);
+                
element.setReferencedEntityName(otherSide.getOwner().getName());
                 collection.setElement(element);
                 new 
CollectionForPropertyConfigBinder().bindCollectionForPropertyConfig(collection, 
propConfig);
                 if (property.isCircular()) {
@@ -372,11 +372,6 @@ public class CollectionSecondPassBinder {
         
manyToOne.setReferencedEntityName(property.getHibernateAssociatedEntity().getName());
     }
 
-    private void bindManyToMany(Association property, ManyToOne element) {
-        manyToOneBinder.bindManyToOne(property, element, EMPTY_PATH);
-        element.setReferencedEntityName(property.getOwner().getName());
-    }
-
     private void bindDependentKeyValue(GrailsHibernatePersistentProperty 
property, DependantValue key) {
 
         if (LOG.isDebugEnabled()) {
diff --git 
a/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/CollectionBinderSpec.groovy
 
b/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/CollectionBinderSpec.groovy
index 455690daf3..d687080e50 100644
--- 
a/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/CollectionBinderSpec.groovy
+++ 
b/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/CollectionBinderSpec.groovy
@@ -66,7 +66,7 @@ class CollectionBinderSpec extends HibernateGormDatastoreSpec 
{
                 simpleValueBinder
         )
         OneToOneBinder oneToOneBinder = new OneToOneBinder(namingStrategy, 
simpleValueBinder)
-        ManyToOneBinder manyToOneBinder = new ManyToOneBinder(namingStrategy, 
simpleValueBinder, new ManyToOneValuesBinder(), 
compositeIdentifierToManyToOneBinder, simpleValueColumnFetcher)
+        ManyToOneBinder manyToOneBinder = new 
ManyToOneBinder(metadataBuildingContext, namingStrategy, simpleValueBinder, new 
ManyToOneValuesBinder(), compositeIdentifierToManyToOneBinder, 
simpleValueColumnFetcher)
 
         CollectionBinder collectionBinder = new CollectionBinder(
                 metadataBuildingContext,
@@ -106,7 +106,7 @@ class CollectionBinderSpec extends 
HibernateGormDatastoreSpec {
                 manyToOneBinder,
                 propertyFromValueCreator
         )
-        CompositeIdBinder compositeIdBinder = new 
CompositeIdBinder(metadataBuildingContext, componentBinder)
+        CompositeIdBinder compositeIdBinder = new 
CompositeIdBinder(metadataBuildingContext, componentBinder, componentUpdater)
         PropertyBinder propertyBinderHelper = new PropertyBinder()
         SimpleIdBinder simpleIdBinder = new 
SimpleIdBinder(metadataBuildingContext, namingStrategy, jdbcEnvironment, new 
BasicValueIdCreator(jdbcEnvironment), simpleValueBinder, propertyBinderHelper)
         IdentityBinder identityBinder = new IdentityBinder(simpleIdBinder, 
compositeIdBinder)
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 d58eed4f01..464e2abb0a 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
@@ -65,7 +65,7 @@ class CollectionSecondPassBinderSpec extends 
HibernateGormDatastoreSpec {
                 simpleValueBinder
         )
         OneToOneBinder oneToOneBinder = new OneToOneBinder(namingStrategy, 
simpleValueBinder)
-        ManyToOneBinder manyToOneBinder = new ManyToOneBinder(namingStrategy, 
simpleValueBinder, new ManyToOneValuesBinder(), 
compositeIdentifierToManyToOneBinder, simpleValueColumnFetcher)
+        ManyToOneBinder manyToOneBinder = new 
ManyToOneBinder(metadataBuildingContext, namingStrategy, simpleValueBinder, new 
ManyToOneValuesBinder(), compositeIdentifierToManyToOneBinder, 
simpleValueColumnFetcher)
 
         CollectionBinder collectionBinder = new CollectionBinder(
                 metadataBuildingContext,
@@ -105,7 +105,7 @@ class CollectionSecondPassBinderSpec extends 
HibernateGormDatastoreSpec {
                 manyToOneBinder,
                 propertyFromValueCreator
         )
-        CompositeIdBinder compositeIdBinder = new 
CompositeIdBinder(metadataBuildingContext, componentBinder)
+        CompositeIdBinder compositeIdBinder = new 
CompositeIdBinder(metadataBuildingContext, componentBinder, componentUpdater)
         PropertyBinder propertyBinderHelper = new PropertyBinder()
         SimpleIdBinder simpleIdBinder = new 
SimpleIdBinder(metadataBuildingContext, namingStrategy, jdbcEnvironment, new 
BasicValueIdCreator(jdbcEnvironment), simpleValueBinder, propertyBinderHelper)
         IdentityBinder identityBinder = new IdentityBinder(simpleIdBinder, 
compositeIdBinder)
diff --git 
a/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/ComponentBinderSpec.groovy
 
b/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/ComponentBinderSpec.groovy
index a28128ee15..6b3e427944 100644
--- 
a/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/ComponentBinderSpec.groovy
+++ 
b/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/ComponentBinderSpec.groovy
@@ -170,6 +170,7 @@ class ComponentBinderSpec extends 
HibernateGormDatastoreSpec {
         def mappings = Mock(InFlightMetadataCollector)
         def hibernateProperty = new Property()
         hibernateProperty.setName("owner")
+        def hibernateManyToOne = new 
HibernateManyToOne(metadataBuildingContext, table)
 
         def mapping = new Mapping()
         ownerEntity.getMappedForm() >> mapping
@@ -186,7 +187,7 @@ class ComponentBinderSpec extends 
HibernateGormDatastoreSpec {
         binder.bindComponentProperty(component, componentProperty, 
currentGrailsProp, root, "address", table, mappings)
 
         then:
-        1 * manyToOneBinder.bindManyToOne(currentGrailsProp, _ as 
HibernateManyToOne, "address")
+        1 * manyToOneBinder.bindManyToOne(currentGrailsProp, table, "address") 
>> hibernateManyToOne
         0 * componentUpdater.updateComponent(_, _, _, _)
     }
 
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 5d0141c5b8..55f3312fde 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
@@ -70,7 +70,7 @@ class GrailsPropertyBinderSpec extends 
HibernateGormDatastoreSpec {
                 simpleValueBinder
         )
         OneToOneBinder oneToOneBinder = new OneToOneBinder(namingStrategy, 
simpleValueBinder)
-        ManyToOneBinder manyToOneBinder = new ManyToOneBinder(namingStrategy, 
simpleValueBinder, new ManyToOneValuesBinder(), 
compositeIdentifierToManyToOneBinder, simpleValueColumnFetcher)
+        ManyToOneBinder manyToOneBinder = new 
ManyToOneBinder(metadataBuildingContext, namingStrategy, simpleValueBinder, new 
ManyToOneValuesBinder(), compositeIdentifierToManyToOneBinder, 
simpleValueColumnFetcher)
 
         CollectionBinder collectionBinder = new CollectionBinder(
                 metadataBuildingContext,
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 30ab28c01a..621fcaff53 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
@@ -65,7 +65,7 @@ class ListSecondPassBinderSpec extends 
HibernateGormDatastoreSpec {
                 simpleValueBinder
         )
         OneToOneBinder oneToOneBinder = new OneToOneBinder(namingStrategy, 
simpleValueBinder)
-        ManyToOneBinder manyToOneBinder = new ManyToOneBinder(namingStrategy, 
simpleValueBinder, new ManyToOneValuesBinder(), 
compositeIdentifierToManyToOneBinder, simpleValueColumnFetcher)
+        ManyToOneBinder manyToOneBinder = new 
ManyToOneBinder(metadataBuildingContext, namingStrategy, simpleValueBinder, new 
ManyToOneValuesBinder(), compositeIdentifierToManyToOneBinder, 
simpleValueColumnFetcher)
 
         CollectionBinder collectionBinder = new CollectionBinder(
                 metadataBuildingContext,
@@ -105,7 +105,7 @@ class ListSecondPassBinderSpec extends 
HibernateGormDatastoreSpec {
                 manyToOneBinder,
                 propertyFromValueCreator
         )
-        CompositeIdBinder compositeIdBinder = new 
CompositeIdBinder(metadataBuildingContext, componentBinder)
+        CompositeIdBinder compositeIdBinder = new 
CompositeIdBinder(metadataBuildingContext, componentBinder, componentUpdater)
         PropertyBinder propertyBinderHelper = new PropertyBinder()
         SimpleIdBinder simpleIdBinder = new 
SimpleIdBinder(metadataBuildingContext, namingStrategy, jdbcEnvironment, new 
BasicValueIdCreator(jdbcEnvironment), simpleValueBinder, propertyBinderHelper)
         IdentityBinder identityBinder = new IdentityBinder(simpleIdBinder, 
compositeIdBinder)
diff --git 
a/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/ManyToOneBinderSpec.groovy
 
b/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/ManyToOneBinderSpec.groovy
index b5102ed33d..b8fd87f5d6 100644
--- 
a/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/ManyToOneBinderSpec.groovy
+++ 
b/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/ManyToOneBinderSpec.groovy
@@ -34,10 +34,9 @@ class ManyToOneBinderSpec extends HibernateGormDatastoreSpec 
{
         def compositeBinder = Mock(CompositeIdentifierToManyToOneBinder)
         def columnFetcher = Mock(SimpleValueColumnFetcher)
 
-        def binder = new ManyToOneBinder(namingStrategy, simpleValueBinder, 
manyToOneValuesBinder, compositeBinder, columnFetcher)
+        def binder = new 
ManyToOneBinder(getGrailsDomainBinder().getMetadataBuildingContext(), 
namingStrategy, simpleValueBinder, manyToOneValuesBinder, compositeBinder, 
columnFetcher)
 
         def association = Mock(HibernateManyToOneProperty)
-        def manyToOne = new 
ManyToOne(getGrailsDomainBinder().getMetadataBuildingContext(), null)
         def path = "/test"
         def mapping = new Mapping()
         def refDomainClass = Mock(GrailsHibernatePersistentEntity) {
@@ -50,12 +49,13 @@ class ManyToOneBinderSpec extends 
HibernateGormDatastoreSpec {
         mapping.setIdentity(hasCompositeId ? new CompositeIdentity() : null)
 
         when:
-        binder.bindManyToOne(association as Association, manyToOne, path)
+        def result = binder.bindManyToOne(association as Association, null, 
path)
 
         then:
-        1 * manyToOneValuesBinder.bindManyToOneValues(association as 
Association, manyToOne)
-        compositeBinderCalls * 
compositeBinder.bindCompositeIdentifierToManyToOne(association as 
GrailsHibernatePersistentProperty, manyToOne, _, refDomainClass, path)
-        simpleValueBinderCalls * simpleValueBinder.bindSimpleValue(association 
as GrailsHibernatePersistentProperty, null, manyToOne, path)
+        result instanceof ManyToOne
+        1 * manyToOneValuesBinder.bindManyToOneValues(association as 
Association, _ as ManyToOne)
+        compositeBinderCalls * 
compositeBinder.bindCompositeIdentifierToManyToOne(association as 
GrailsHibernatePersistentProperty, _ as ManyToOne, _, refDomainClass, path)
+        simpleValueBinderCalls * simpleValueBinder.bindSimpleValue(association 
as GrailsHibernatePersistentProperty, null, _ as ManyToOne, path)
 
         where:
         scenario                 | hasCompositeId | compositeBinderCalls | 
simpleValueBinderCalls
@@ -71,10 +71,9 @@ class ManyToOneBinderSpec extends HibernateGormDatastoreSpec 
{
         def compositeBinder = Mock(CompositeIdentifierToManyToOneBinder)
         def columnFetcher = Mock(SimpleValueColumnFetcher)
 
-        def binder = new ManyToOneBinder(namingStrategy, simpleValueBinder, 
manyToOneValuesBinder, compositeBinder, columnFetcher)
+        def binder = new 
ManyToOneBinder(getGrailsDomainBinder().getMetadataBuildingContext(), 
namingStrategy, simpleValueBinder, manyToOneValuesBinder, compositeBinder, 
columnFetcher)
 
         def property = Mock(HibernateManyToManyProperty)
-        def manyToOne = new 
ManyToOne(getGrailsDomainBinder().getMetadataBuildingContext(), null)
         def mapping = new Mapping()
         mapping.setColumns(new HashMap<String, PropertyConfig>())
         def ownerEntity = Mock(GrailsHibernatePersistentEntity) {
@@ -89,11 +88,12 @@ class ManyToOneBinderSpec extends 
HibernateGormDatastoreSpec {
         namingStrategy.resolveColumnName("myCircularProp") >> 
"my_circular_prop"
 
         when:
-        binder.bindManyToOne(property as Association, manyToOne, "/test")
+        def result = binder.bindManyToOne(property as Association, null, 
"/test")
 
         then:
-        1 * manyToOneValuesBinder.bindManyToOneValues(property as Association, 
manyToOne)
-        1 * simpleValueBinder.bindSimpleValue(property as 
GrailsHibernatePersistentProperty, null, manyToOne, "/test")
+        result instanceof ManyToOne
+        1 * manyToOneValuesBinder.bindManyToOneValues(property as Association, 
_ as ManyToOne)
+        1 * simpleValueBinder.bindSimpleValue(property as 
GrailsHibernatePersistentProperty, null, _ as ManyToOne, "/test")
         def resultConfig = mapping.getColumns().get("myCircularProp")
         resultConfig != null
         resultConfig.getJoinTable().getKey().getName() == "my_circular_prop_id"
@@ -108,10 +108,9 @@ class ManyToOneBinderSpec extends 
HibernateGormDatastoreSpec {
         def compositeBinder = Mock(CompositeIdentifierToManyToOneBinder)
         def columnFetcher = Mock(SimpleValueColumnFetcher)
 
-        def binder = new ManyToOneBinder(namingStrategy, simpleValueBinder, 
manyToOneValuesBinder, compositeBinder, columnFetcher)
+        def binder = new 
ManyToOneBinder(getGrailsDomainBinder().getMetadataBuildingContext(), 
namingStrategy, simpleValueBinder, manyToOneValuesBinder, compositeBinder, 
columnFetcher)
 
         def property = Mock(HibernateOneToOneProperty)
-        def manyToOne = new 
ManyToOne(getGrailsDomainBinder().getMetadataBuildingContext(), null)
         def mapping = new Mapping()
         def refDomainClass = Mock(GrailsHibernatePersistentEntity) {
             getMappedForm() >> mapping
@@ -123,7 +122,7 @@ class ManyToOneBinderSpec extends 
HibernateGormDatastoreSpec {
         property.getAssociatedEntity() >> refDomainClass
         mapping.setIdentity(null)
         property.getMappedForm() >> propertyConfig
-        columnFetcher.getColumnForSimpleValue(manyToOne) >> column
+        columnFetcher.getColumnForSimpleValue(_ as ManyToOne) >> column
 
         propertyConfig.isUnique() >> isUnique
         propertyConfig.isUniqueWithinGroup() >> isUniqueWithinGroup
@@ -132,10 +131,10 @@ class ManyToOneBinderSpec extends 
HibernateGormDatastoreSpec {
         inverseSide.isHasOne() >> isInverseHasOne
 
         when:
-        binder.bindManyToOne(property as Association, manyToOne, "/test")
+        def result = binder.bindManyToOne(property as Association, null, 
"/test")
 
         then:
-        manyToOne.isAlternateUniqueKey()
+        result.isAlternateUniqueKey()
         if (expectedUniqueValue != null) {
             assert column.isUnique() == expectedUniqueValue
         } else {
@@ -159,10 +158,9 @@ class ManyToOneBinderSpec extends 
HibernateGormDatastoreSpec {
         def compositeBinder = Mock(CompositeIdentifierToManyToOneBinder)
         def columnFetcher = Mock(SimpleValueColumnFetcher)
 
-        def binder = new ManyToOneBinder(namingStrategy, simpleValueBinder, 
manyToOneValuesBinder, compositeBinder, columnFetcher)
+        def binder = new 
ManyToOneBinder(getGrailsDomainBinder().getMetadataBuildingContext(), 
namingStrategy, simpleValueBinder, manyToOneValuesBinder, compositeBinder, 
columnFetcher)
 
         def property = Mock(HibernateOneToOneProperty)
-        def manyToOne = new 
ManyToOne(getGrailsDomainBinder().getMetadataBuildingContext(), null)
         def mapping = new Mapping()
         def refDomainClass = Mock(GrailsHibernatePersistentEntity) {
             getMappedForm() >> mapping
@@ -172,10 +170,10 @@ class ManyToOneBinderSpec extends 
HibernateGormDatastoreSpec {
         property.getAssociatedEntity() >> refDomainClass
         mapping.setIdentity(null)
         property.getMappedForm() >> propertyConfig
-        columnFetcher.getColumnForSimpleValue(manyToOne) >> null
+        columnFetcher.getColumnForSimpleValue(_ as ManyToOne) >> null
 
         when:
-        binder.bindManyToOne(property as Association, manyToOne, "/test")
+        binder.bindManyToOne(property as Association, null, "/test")
 
         then:
         thrown(MappingException)
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 8e4f59702a..e1c26709f6 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
@@ -65,7 +65,7 @@ class MapSecondPassBinderSpec extends 
HibernateGormDatastoreSpec {
                 simpleValueBinder
         )
         OneToOneBinder oneToOneBinder = new OneToOneBinder(namingStrategy, 
simpleValueBinder)
-        ManyToOneBinder manyToOneBinder = new ManyToOneBinder(namingStrategy, 
simpleValueBinder, new ManyToOneValuesBinder(), 
compositeIdentifierToManyToOneBinder, simpleValueColumnFetcher)
+        ManyToOneBinder manyToOneBinder = new 
ManyToOneBinder(metadataBuildingContext, namingStrategy, simpleValueBinder, new 
ManyToOneValuesBinder(), compositeIdentifierToManyToOneBinder, 
simpleValueColumnFetcher)
 
         CollectionBinder collectionBinder = new CollectionBinder(
                 metadataBuildingContext,
@@ -105,7 +105,7 @@ class MapSecondPassBinderSpec extends 
HibernateGormDatastoreSpec {
                 manyToOneBinder,
                 propertyFromValueCreator
         )
-        CompositeIdBinder compositeIdBinder = new 
CompositeIdBinder(metadataBuildingContext, componentBinder)
+        CompositeIdBinder compositeIdBinder = new 
CompositeIdBinder(metadataBuildingContext, componentBinder, componentUpdater)
         PropertyBinder propertyBinderHelper = new PropertyBinder()
         SimpleIdBinder simpleIdBinder = new 
SimpleIdBinder(metadataBuildingContext, namingStrategy, jdbcEnvironment, new 
BasicValueIdCreator(jdbcEnvironment), simpleValueBinder, propertyBinderHelper)
         IdentityBinder identityBinder = new IdentityBinder(simpleIdBinder, 
compositeIdBinder)

Reply via email to