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,

Reply via email to