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)
