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 183cd02543254b6b6c92021153195c62aaefbfa7 Author: Walter Duque de Estrada <[email protected]> AuthorDate: Sun Feb 15 20:58:10 2026 -0600 update ComponentBinder to create and return Component internally --- .../groovy/org/grails/orm/hibernate/cfg/GrailsDomainBinder.java | 2 +- .../orm/hibernate/cfg/domainbinding/binder/ComponentBinder.java | 9 +++++++-- .../cfg/domainbinding/binder/ComponentPropertyBinder.java | 5 ++--- .../hibernate/cfg/domainbinding/binder/GrailsPropertyBinder.java | 3 +-- .../orm/hibernate/cfg/domainbinding/CollectionBinderSpec.groovy | 2 +- .../cfg/domainbinding/CollectionSecondPassBinderSpec.groovy | 2 +- .../orm/hibernate/cfg/domainbinding/ComponentBinderSpec.groovy | 5 ++--- .../hibernate/cfg/domainbinding/GrailsPropertyBinderSpec.groovy | 2 +- .../hibernate/cfg/domainbinding/ListSecondPassBinderSpec.groovy | 2 +- .../hibernate/cfg/domainbinding/MapSecondPassBinderSpec.groovy | 2 +- 10 files changed, 18 insertions(+), 16 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 4439ad5a8e..fc34c716c7 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 @@ -198,7 +198,7 @@ public class GrailsDomainBinder manyToOneBinder, columnNameForPropertyAndPathFetcher ); - ComponentBinder componentBinder = new ComponentBinder(getMappingCacheHolder(), componentPropertyBinder); + ComponentBinder componentBinder = new ComponentBinder(metadataBuildingContext, getMappingCacheHolder(), componentPropertyBinder); GrailsPropertyBinder grailsPropertyBinder = new GrailsPropertyBinder( metadataBuildingContext, namingStrategy, 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 262b702522..b09fc227fe 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 @@ -1,6 +1,7 @@ package org.grails.orm.hibernate.cfg.domainbinding.binder; import org.hibernate.boot.spi.InFlightMetadataCollector; +import org.hibernate.boot.spi.MetadataBuildingContext; import org.hibernate.mapping.Component; import org.hibernate.mapping.PersistentClass; import org.hibernate.mapping.Table; @@ -16,17 +17,20 @@ import jakarta.annotation.Nonnull; public class ComponentBinder { + private final MetadataBuildingContext metadataBuildingContext; private final MappingCacheHolder mappingCacheHolder; private final ComponentPropertyBinder componentPropertyBinder; - public ComponentBinder(MappingCacheHolder mappingCacheHolder, ComponentPropertyBinder componentPropertyBinder) { + public ComponentBinder(MetadataBuildingContext metadataBuildingContext, MappingCacheHolder mappingCacheHolder, ComponentPropertyBinder componentPropertyBinder) { + this.metadataBuildingContext = metadataBuildingContext; this.mappingCacheHolder = mappingCacheHolder; this.componentPropertyBinder = componentPropertyBinder; } - public void bindComponent(Component component, HibernateEmbeddedProperty property, + public Component bindComponent(PersistentClass owner, HibernateEmbeddedProperty property, @Nonnull InFlightMetadataCollector mappings) { + Component component = new Component(metadataBuildingContext, owner); Class<?> type = property.getType(); String role = GrailsHibernateUtil.qualify(type.getName(), property.getName()); component.setRoleName(role); @@ -50,5 +54,6 @@ public class ComponentBinder { } componentPropertyBinder.bindComponentProperty(component, property, currentGrailsProp, persistentClass, path, table, mappings); } + return component; } } diff --git a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/ComponentPropertyBinder.java b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/ComponentPropertyBinder.java index 52402339b3..697b99179c 100644 --- a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/ComponentPropertyBinder.java +++ b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/ComponentPropertyBinder.java @@ -90,7 +90,7 @@ public class ComponentPropertyBinder { this.enumTypeBinder = enumTypeBinder; this.collectionBinder = collectionBinder; this.propertyFromValueCreator = propertyFromValueCreator; - this.componentBinder = componentBinder != null ? componentBinder : new ComponentBinder(mappingCacheHolder, this); + this.componentBinder = componentBinder != null ? componentBinder : new ComponentBinder(metadataBuildingContext, mappingCacheHolder, this); this.simpleValueBinder = simpleValueBinder; this.oneToOneBinder = oneToOneBinder; this.manyToOneBinder = manyToOneBinder; @@ -137,8 +137,7 @@ public class ComponentPropertyBinder { } } else if (currentGrailsProp instanceof HibernateEmbeddedProperty embedded) { - value = new Component(metadataBuildingContext, persistentClass); - componentBinder.bindComponent((Component) value, embedded, mappings); + value = componentBinder.bindComponent(persistentClass, embedded, mappings); } else { if (LOG.isDebugEnabled()) 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 a22bfb3d8f..744b3f3fba 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 @@ -138,8 +138,7 @@ public class GrailsPropertyBinder { manyToOneBinder.bindManyToOne((Association)currentGrailsProp, (ManyToOne)value, EMPTY_PATH); } else if (currentGrailsProp instanceof HibernateEmbeddedProperty embedded) { - value = new Component(metadataBuildingContext, persistentClass); - componentBinder.bindComponent((Component)value, embedded,mappings); + value = componentBinder.bindComponent(persistentClass, embedded, mappings); } // work out what type of relationship it is and bind value else { // Default BasicValue 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 804e04ec9b..2653cfd25a 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 @@ -94,7 +94,7 @@ class CollectionBinderSpec extends HibernateGormDatastoreSpec { manyToOneBinder, columnNameForPropertyAndPathFetcher ) - ComponentBinder componentBinder = new ComponentBinder(binder.getMappingCacheHolder(), componentPropertyBinder) + ComponentBinder componentBinder = new ComponentBinder(metadataBuildingContext, binder.getMappingCacheHolder(), componentPropertyBinder) GrailsPropertyBinder propertyBinder = new GrailsPropertyBinder( metadataBuildingContext, namingStrategy, 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 3161939a17..19e5e00eee 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 @@ -96,7 +96,7 @@ class CollectionSecondPassBinderSpec extends HibernateGormDatastoreSpec { manyToOneBinder, columnNameForPropertyAndPathFetcher ) - ComponentBinder componentBinder = new ComponentBinder(binder.getMappingCacheHolder(), componentPropertyBinder) + ComponentBinder componentBinder = new ComponentBinder(metadataBuildingContext, binder.getMappingCacheHolder(), componentPropertyBinder) GrailsPropertyBinder propertyBinder = new GrailsPropertyBinder( metadataBuildingContext, namingStrategy, 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 05ae419043..dd8d19890f 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 @@ -22,7 +22,7 @@ class ComponentBinderSpec extends HibernateGormDatastoreSpec { ComponentBinder binder def setup() { - binder = new ComponentBinder(mappingCacheHolder, componentPropertyBinder) + binder = new ComponentBinder(getGrailsDomainBinder().getMetadataBuildingContext(), mappingCacheHolder, componentPropertyBinder) } def "should bind component and its properties"() { @@ -30,7 +30,6 @@ class ComponentBinderSpec extends HibernateGormDatastoreSpec { def metadataBuildingContext = getGrailsDomainBinder().getMetadataBuildingContext() def root = new RootClass(metadataBuildingContext) root.setEntityName("MyEntity") - def component = new Component(metadataBuildingContext, root) def embeddedProp = GroovyMock(HibernateEmbeddedProperty) def associatedEntity = GroovyMock(GrailsHibernatePersistentEntity) @@ -52,7 +51,7 @@ class ComponentBinderSpec extends HibernateGormDatastoreSpec { def mappings = metadataBuildingContext.getMetadataCollector() when: - binder.bindComponent(component, embeddedProp, mappings) + def component = binder.bindComponent(root, embeddedProp, mappings) then: component.getComponentClassName() == Address.name 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 84e92b4278..e6855682cb 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 @@ -98,7 +98,7 @@ class GrailsPropertyBinderSpec extends HibernateGormDatastoreSpec { manyToOneBinder, columnNameForPropertyAndPathFetcher ) - ComponentBinder componentBinder = new ComponentBinder(binder.getMappingCacheHolder(), componentPropertyBinder) + ComponentBinder componentBinder = new ComponentBinder(metadataBuildingContext, binder.getMappingCacheHolder(), componentPropertyBinder) GrailsPropertyBinder propertyBinder = new GrailsPropertyBinder( metadataBuildingContext, namingStrategy, 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 0bc9b88328..3dfcbbcb13 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 @@ -98,7 +98,7 @@ class ListSecondPassBinderSpec extends HibernateGormDatastoreSpec { manyToOneBinder, columnNameForPropertyAndPathFetcher ) - ComponentBinder componentBinder = new ComponentBinder(binder.getMappingCacheHolder(), componentPropertyBinder) + ComponentBinder componentBinder = new ComponentBinder(metadataBuildingContext, binder.getMappingCacheHolder(), componentPropertyBinder) GrailsPropertyBinder propertyBinder = new GrailsPropertyBinder( metadataBuildingContext, namingStrategy, 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 bc546872b7..adbb5f0e93 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 @@ -98,7 +98,7 @@ class MapSecondPassBinderSpec extends HibernateGormDatastoreSpec { manyToOneBinder, columnNameForPropertyAndPathFetcher ) - ComponentBinder componentBinder = new ComponentBinder(binder.getMappingCacheHolder(), componentPropertyBinder) + ComponentBinder componentBinder = new ComponentBinder(metadataBuildingContext, binder.getMappingCacheHolder(), componentPropertyBinder) GrailsPropertyBinder propertyBinder = new GrailsPropertyBinder( metadataBuildingContext, namingStrategy,
