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 9c8ba25a0abb8d2cd52226ad65558e515d5074ae
Author: Walter Duque de Estrada <[email protected]>
AuthorDate: Sat Feb 7 11:57:35 2026 -0600

    remove duplication of SecondPass
---
 .../cfg/domainbinding/CollectionBinder.java        | 23 +-----
 .../domainbinding/secondpass/GrailsSecondPass.java | 10 +++
 .../domainbinding/secondpass/ListSecondPass.java   | 31 +-------
 .../domainbinding/secondpass/MapSecondPass.java    | 31 +-------
 .../secondpass/SetCollectionSecondPass.java        | 86 ----------------------
 .../domainbinding/secondpass/SetSecondPass.java    | 53 +++++++++++++
 6 files changed, 75 insertions(+), 159 deletions(-)

diff --git 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/CollectionBinder.java
 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/CollectionBinder.java
index ac73b9a9b6..c37805d35d 100644
--- 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/CollectionBinder.java
+++ 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/CollectionBinder.java
@@ -1,45 +1,30 @@
 package org.grails.orm.hibernate.cfg.domainbinding;
 
 import jakarta.annotation.Nonnull;
-import org.grails.datastore.mapping.model.PersistentEntity;
+
 import org.grails.datastore.mapping.model.PersistentProperty;
 import org.grails.orm.hibernate.cfg.GrailsDomainBinder;
 import org.grails.orm.hibernate.cfg.GrailsHibernatePersistentEntity;
-import org.grails.orm.hibernate.cfg.GrailsHibernatePersistentProperty;
 import org.grails.orm.hibernate.cfg.GrailsHibernateUtil;
 import org.grails.orm.hibernate.cfg.HibernateToManyProperty;
-import org.grails.orm.hibernate.cfg.Mapping;
 import org.grails.orm.hibernate.cfg.PersistentEntityNamingStrategy;
 import org.grails.orm.hibernate.cfg.PropertyConfig;
-import org.grails.orm.hibernate.cfg.ColumnConfig;
 import org.grails.orm.hibernate.cfg.JoinTable;
-import 
org.grails.orm.hibernate.cfg.domainbinding.secondpass.SetCollectionSecondPass;
+import org.grails.orm.hibernate.cfg.domainbinding.secondpass.SetSecondPass;
 import org.grails.orm.hibernate.cfg.domainbinding.secondpass.ListSecondPass;
 import org.grails.orm.hibernate.cfg.domainbinding.secondpass.MapSecondPass;
 import org.hibernate.FetchMode;
-import org.hibernate.MappingException;
 import org.hibernate.boot.spi.InFlightMetadataCollector;
 import org.hibernate.boot.spi.MetadataBuildingContext;
-import org.hibernate.mapping.BasicValue;
 import org.hibernate.mapping.Collection;
-import org.hibernate.mapping.Column;
-import org.hibernate.mapping.Component;
-import org.hibernate.mapping.IndexedCollection;
 import org.hibernate.mapping.OneToMany;
 import org.hibernate.mapping.PersistentClass;
-import org.hibernate.mapping.Property;
-import org.hibernate.mapping.SimpleValue;
 import org.hibernate.mapping.Table;
-import org.hibernate.mapping.Value;
-import org.hibernate.type.StandardBasicTypes;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import java.util.List;
 import java.util.Map;
 
-import static org.grails.orm.hibernate.cfg.GrailsDomainBinder.*;
-
 /**
  * Handles the binding of collections to the Hibernate runtime meta model.
  */
@@ -114,7 +99,7 @@ public class CollectionBinder {
 
         // set up second pass
         if (collection instanceof org.hibernate.mapping.Set) {
-            mappings.addSecondPass(new 
SetCollectionSecondPass(grailsDomainBinder, this, property, mappings, 
collection, sessionFactoryBeanName));
+            mappings.addSecondPass(new SetSecondPass(grailsDomainBinder, this, 
property, mappings, collection, sessionFactoryBeanName));
         }
         else if (collection instanceof org.hibernate.mapping.List) {
             mappings.addSecondPass(new ListSecondPass(grailsDomainBinder, 
this, listSecondPassBinder, property, mappings, collection, 
sessionFactoryBeanName));
@@ -123,7 +108,7 @@ public class CollectionBinder {
             mappings.addSecondPass(new MapSecondPass(grailsDomainBinder, this, 
mapSecondPassBinder, property, mappings, collection, sessionFactoryBeanName));
         }
         else { // Collection -> Bag
-            mappings.addSecondPass(new 
SetCollectionSecondPass(grailsDomainBinder, this, property, mappings, 
collection, sessionFactoryBeanName));
+            mappings.addSecondPass(new SetSecondPass(grailsDomainBinder, this, 
property, mappings, collection, sessionFactoryBeanName));
         }
     }
 
diff --git 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/secondpass/GrailsSecondPass.java
 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/secondpass/GrailsSecondPass.java
new file mode 100644
index 0000000000..f024348c5a
--- /dev/null
+++ 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/secondpass/GrailsSecondPass.java
@@ -0,0 +1,10 @@
+package org.grails.orm.hibernate.cfg.domainbinding.secondpass;
+
+import org.hibernate.mapping.Collection;
+
+public interface GrailsSecondPass {
+
+    default void createCollectionKeys(Collection collection) {
+        collection.createAllKeys();
+    }
+}
diff --git 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/secondpass/ListSecondPass.java
 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/secondpass/ListSecondPass.java
index f60afd15af..2bc3df5705 100644
--- 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/secondpass/ListSecondPass.java
+++ 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/secondpass/ListSecondPass.java
@@ -1,5 +1,6 @@
 package org.grails.orm.hibernate.cfg.domainbinding.secondpass;
 
+import java.io.Serial;
 import java.util.Iterator;
 import java.util.Map;
 
@@ -18,7 +19,8 @@ import org.grails.orm.hibernate.cfg.HibernateToManyProperty;
 import org.grails.orm.hibernate.cfg.domainbinding.CollectionBinder;
 import org.grails.orm.hibernate.cfg.domainbinding.ListSecondPassBinder;
 
-public class ListSecondPass implements org.hibernate.boot.spi.SecondPass {
+public class ListSecondPass implements org.hibernate.boot.spi.SecondPass, 
GrailsSecondPass {
+    @Serial
     private static final long serialVersionUID = -3024674993774205193L;
 
     protected final GrailsDomainBinder grailsDomainBinder;
@@ -47,34 +49,9 @@ public class ListSecondPass implements 
org.hibernate.boot.spi.SecondPass {
         collectionBinder.bindCollectionSecondPass(property, mappings, 
persistentClasses, collection, sessionFactoryBeanName);
         listSecondPassBinder.bindListSecondPass(property, mappings, 
persistentClasses,
                 (org.hibernate.mapping.List) collection, 
sessionFactoryBeanName);
-        createCollectionKeys();
+        createCollectionKeys(collection);
     }
 
-    protected void createCollectionKeys() {
-        collection.createAllKeys();
 
-        if (GrailsDomainBinder.LOG.isDebugEnabled()) {
-            String msg = "Mapped collection key: " + 
columns(collection.getKey());
-            if (collection.isIndexed())
-                msg += ", index: " + columns(((IndexedCollection) 
collection).getIndex());
-            if (collection.isOneToMany()) {
-                msg += ", one-to-many: "
-                        + ((OneToMany) 
collection.getElement()).getReferencedEntityName();
-            } else {
-                msg += ", element: " + columns(collection.getElement());
-            }
-            GrailsDomainBinder.LOG.debug(msg);
-        }
-    }
-
-    protected String columns(Value val) {
-        StringBuilder columns = new StringBuilder();
-        Iterator<?> iter = val.getColumns().iterator();
-        while (iter.hasNext()) {
-            columns.append(((Selectable) iter.next()).getText());
-            if (iter.hasNext()) columns.append(", ");
-        }
-        return columns.toString();
-    }
 }
 
diff --git 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/secondpass/MapSecondPass.java
 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/secondpass/MapSecondPass.java
index 0215fbc370..31ff7dc83b 100644
--- 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/secondpass/MapSecondPass.java
+++ 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/secondpass/MapSecondPass.java
@@ -1,5 +1,6 @@
 package org.grails.orm.hibernate.cfg.domainbinding.secondpass;
 
+import java.io.Serial;
 import java.util.Iterator;
 import java.util.Map;
 
@@ -18,7 +19,8 @@ import org.grails.orm.hibernate.cfg.HibernateToManyProperty;
 import org.grails.orm.hibernate.cfg.domainbinding.CollectionBinder;
 import org.grails.orm.hibernate.cfg.domainbinding.MapSecondPassBinder;
 
-public class MapSecondPass implements org.hibernate.boot.spi.SecondPass {
+public class MapSecondPass implements org.hibernate.boot.spi.SecondPass, 
GrailsSecondPass {
+    @Serial
     private static final long serialVersionUID = -3244991685626409031L;
 
     protected final GrailsDomainBinder grailsDomainBinder;
@@ -48,33 +50,8 @@ public class MapSecondPass implements 
org.hibernate.boot.spi.SecondPass {
         collectionBinder.bindCollectionSecondPass(property, mappings, 
persistentClasses, collection, sessionFactoryBeanName);
         mapSecondPassBinder.bindMapSecondPass(property, mappings, 
persistentClasses,
                 (org.hibernate.mapping.Map) collection, 
sessionFactoryBeanName);
-        createCollectionKeys();
+        createCollectionKeys(collection);
     }
 
-    protected void createCollectionKeys() {
-        collection.createAllKeys();
 
-        if (GrailsDomainBinder.LOG.isDebugEnabled()) {
-            String msg = "Mapped collection key: " + 
columns(collection.getKey());
-            if (collection.isIndexed())
-                msg += ", index: " + columns(((IndexedCollection) 
collection).getIndex());
-            if (collection.isOneToMany()) {
-                msg += ", one-to-many: "
-                        + ((OneToMany) 
collection.getElement()).getReferencedEntityName();
-            } else {
-                msg += ", element: " + columns(collection.getElement());
-            }
-            GrailsDomainBinder.LOG.debug(msg);
-        }
-    }
-
-    protected String columns(Value val) {
-        StringBuilder columns = new StringBuilder();
-        Iterator<?> iter = val.getColumns().iterator();
-        while (iter.hasNext()) {
-            columns.append(((Selectable) iter.next()).getText());
-            if (iter.hasNext()) columns.append(", ");
-        }
-        return columns.toString();
-    }
 }
diff --git 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/secondpass/SetCollectionSecondPass.java
 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/secondpass/SetCollectionSecondPass.java
deleted file mode 100644
index e1c3d1b8ff..0000000000
--- 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/secondpass/SetCollectionSecondPass.java
+++ /dev/null
@@ -1,86 +0,0 @@
-package org.grails.orm.hibernate.cfg.domainbinding.secondpass;
-
-import java.util.Iterator;
-import java.util.Map;
-
-import jakarta.annotation.Nonnull;
-
-import org.hibernate.MappingException;
-import org.hibernate.boot.spi.InFlightMetadataCollector;
-import org.hibernate.mapping.Collection;
-import org.hibernate.mapping.IndexedCollection;
-import org.hibernate.mapping.OneToMany;
-import org.hibernate.mapping.Selectable;
-import org.hibernate.mapping.Value;
-
-import org.grails.orm.hibernate.cfg.GrailsDomainBinder;
-import org.grails.orm.hibernate.cfg.HibernateToManyProperty;
-import org.grails.orm.hibernate.cfg.domainbinding.CollectionBinder;
-
-/**
- * Second pass class for grails relationships. This is required as all
- * persistent classes need to be loaded in the first pass and then 
relationships
- * established in the second pass compile
- *
- * @author Graeme
- */
-public class SetCollectionSecondPass implements 
org.hibernate.boot.spi.SecondPass {
-
-    private static final long serialVersionUID = -5540526942092611348L;
-
-    protected final GrailsDomainBinder grailsDomainBinder;
-    protected final CollectionBinder collectionBinder;
-    protected final HibernateToManyProperty property;
-    protected final @Nonnull InFlightMetadataCollector mappings;
-    protected final Collection collection;
-    protected final String sessionFactoryBeanName;
-
-    public SetCollectionSecondPass(GrailsDomainBinder grailsDomainBinder,
-                                      CollectionBinder collectionBinder,
-                                      HibernateToManyProperty property,
-                                      @Nonnull InFlightMetadataCollector 
mappings,
-                                      Collection coll,
-                                      String sessionFactoryBeanName) {
-        this.grailsDomainBinder = grailsDomainBinder;
-        this.collectionBinder = collectionBinder;
-        this.property = property;
-        this.mappings = mappings;
-        this.collection = coll;
-        this.sessionFactoryBeanName = sessionFactoryBeanName;
-    }
-
-
-
-    protected void createCollectionKeys() {
-        collection.createAllKeys();
-
-        if (GrailsDomainBinder.LOG.isDebugEnabled()) {
-            String msg = "Mapped collection key: " + 
columns(collection.getKey());
-            if (collection.isIndexed())
-                msg += ", index: " + columns(((IndexedCollection) 
collection).getIndex());
-            if (collection.isOneToMany()) {
-                msg += ", one-to-many: "
-                        + ((OneToMany) 
collection.getElement()).getReferencedEntityName();
-            } else {
-                msg += ", element: " + columns(collection.getElement());
-            }
-            GrailsDomainBinder.LOG.debug(msg);
-        }
-    }
-
-    protected String columns(Value val) {
-        StringBuilder columns = new StringBuilder();
-        Iterator<?> iter = val.getColumns().iterator();
-        while (iter.hasNext()) {
-            columns.append(((Selectable) iter.next()).getText());
-            if (iter.hasNext()) columns.append(", ");
-        }
-        return columns.toString();
-    }
-
-    @SuppressWarnings("rawtypes")
-    public void doSecondPass(Map persistentClasses) throws MappingException {
-        collectionBinder.bindCollectionSecondPass(property, mappings, 
persistentClasses, collection, sessionFactoryBeanName);
-        createCollectionKeys();
-    }
-}
diff --git 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/secondpass/SetSecondPass.java
 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/secondpass/SetSecondPass.java
new file mode 100644
index 0000000000..2154bd44e9
--- /dev/null
+++ 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/secondpass/SetSecondPass.java
@@ -0,0 +1,53 @@
+package org.grails.orm.hibernate.cfg.domainbinding.secondpass;
+
+import java.util.Map;
+
+import jakarta.annotation.Nonnull;
+
+import org.hibernate.MappingException;
+import org.hibernate.boot.spi.InFlightMetadataCollector;
+import org.hibernate.mapping.Collection;
+
+import org.grails.orm.hibernate.cfg.GrailsDomainBinder;
+import org.grails.orm.hibernate.cfg.HibernateToManyProperty;
+import org.grails.orm.hibernate.cfg.domainbinding.CollectionBinder;
+
+/**
+ * Second pass class for grails relationships. This is required as all
+ * persistent classes need to be loaded in the first pass and then 
relationships
+ * established in the second pass compile
+ *
+ * @author Graeme
+ */
+public class SetSecondPass implements org.hibernate.boot.spi.SecondPass, 
GrailsSecondPass  {
+
+    private static final long serialVersionUID = -5540526942092611348L;
+
+    protected final GrailsDomainBinder grailsDomainBinder;
+    protected final CollectionBinder collectionBinder;
+    protected final HibernateToManyProperty property;
+    protected final @Nonnull InFlightMetadataCollector mappings;
+    protected final Collection collection;
+    protected final String sessionFactoryBeanName;
+
+    public SetSecondPass(GrailsDomainBinder grailsDomainBinder,
+                         CollectionBinder collectionBinder,
+                         HibernateToManyProperty property,
+                         @Nonnull InFlightMetadataCollector mappings,
+                         Collection coll,
+                         String sessionFactoryBeanName) {
+        this.grailsDomainBinder = grailsDomainBinder;
+        this.collectionBinder = collectionBinder;
+        this.property = property;
+        this.mappings = mappings;
+        this.collection = coll;
+        this.sessionFactoryBeanName = sessionFactoryBeanName;
+    }
+
+
+    @SuppressWarnings("rawtypes")
+    public void doSecondPass(Map persistentClasses) throws MappingException {
+        collectionBinder.bindCollectionSecondPass(property, mappings, 
persistentClasses, collection, sessionFactoryBeanName);
+        createCollectionKeys(collection);
+    }
+}

Reply via email to