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 7c715777063ec09430dc789114238e0d24afe38b
Author: Walter Duque de Estrada <[email protected]>
AuthorDate: Mon Feb 9 21:25:20 2026 -0600

    ✦ I have updated NamespaceNameExtractorSpec.groovy to use the now static 
methods of NamespaceNameExtractor. I also identified and fixed a compilation 
error in GrailsHibernatePersistentEntity.java where a
      closing brace was missing and an incorrect method was being called for 
the catalog name.
    
      Summary of Changes:
       1. `NamespaceNameExtractorSpec.groovy`: Updated all test cases to call 
NamespaceNameExtractor.getSchemaName(mappings) and 
NamespaceNameExtractor.getCatalogName(mappings) directly, removing the need for 
an
          instance of the extractor.
---
 .../orm/hibernate/cfg/GrailsDomainBinder.java      | 84 ++++------------------
 .../cfg/GrailsHibernatePersistentEntity.java       | 26 ++++++-
 .../cfg/domainbinding/CollectionBinder.java        |  4 +-
 .../cfg/domainbinding/CompositeIdBinder.java       |  4 --
 .../cfg/domainbinding/NamespaceNameExtractor.java  |  9 ++-
 .../NamespaceNameExtractorSpec.groovy              | 11 ++-
 6 files changed, 47 insertions(+), 91 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 1443580bcb..cef01a3a9a 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
@@ -135,8 +135,6 @@ public class GrailsDomainBinder
         this.propertyFromValueCreator = new PropertyFromValueCreator();
         this.mappingCacheHolder = MappingCacheHolder.getInstance();
         this.collectionHolder = new CollectionHolder(this);
-        this.collectionBinder = new CollectionBinder(null, this, null);
-        this.componentPropertyBinder = new ComponentPropertyBinder(null, null, 
mappingCacheHolder, collectionHolder, enumTypeBinder, collectionBinder, 
propertyFromValueCreator);
         // pre-build mappings
         for (GrailsHibernatePersistentEntity persistentEntity : 
hibernateMappingContext.getHibernatePersistentEntities()) {
             mappingCacheHolder.cacheMapping(persistentEntity);
@@ -160,21 +158,6 @@ public class GrailsDomainBinder
     }
 
 
-    /**
-     * The default mapping defined by {@link 
org.grails.datastore.mapping.config.Settings#SETTING_DEFAULT_MAPPING}
-     * @param defaultMapping The default mapping
-     */
-    public void setDefaultMapping(Closure defaultMapping) {
-        this.defaultMapping = defaultMapping;
-    }
-
-    /**
-     *
-     * @param namingStrategy Custom naming strategy to plugin into table naming
-     */
-    public void setNamingStrategy(PersistentEntityNamingStrategy 
namingStrategy) {
-        this.namingStrategy = namingStrategy;
-    }
 
 
     @Override
@@ -197,16 +180,6 @@ public class GrailsDomainBinder
     }
 
 
-    /**
-     * Override the default naming strategy for the default datasource given a 
Class or a full class name.
-     * @param strategy the class or name
-     * @throws ClassNotFoundException When the class was not found for 
specified strategy
-     * @throws InstantiationException When an error occurred instantiating the 
strategy
-     * @throws IllegalAccessException When an error occurred instantiating the 
strategy
-     */
-    public static void configureNamingStrategy(final Object strategy) throws 
ClassNotFoundException, InstantiationException, IllegalAccessException {
-        configureNamingStrategy(ConnectionSource.DEFAULT, strategy);
-    }
 
     /**
      * Override the default naming strategy given a Class or a full class name,
@@ -225,38 +198,6 @@ public class GrailsDomainBinder
 
 
 
-    /**
-     * First pass to bind collection to Hibernate metamodel, sets up second 
pass
-     *
-     * @param property   The GrailsDomainClassProperty instance
-     * @param collection The collection
-     * @param owner      The owning persistent class
-     * @param mappings   The Hibernate mappings instance
-     * @param path
-     */
-    public void bindCollection(HibernateToManyProperty property, Collection 
collection,
-                               PersistentClass owner, @Nonnull 
InFlightMetadataCollector mappings, String path, String sessionFactoryBeanName) 
{
-        collectionBinder.bindCollection(property, collection, owner, mappings, 
path, sessionFactoryBeanName);
-    }
-
-    /**
-     * Binds a Grails domain class to the Hibernate runtime meta model
-     *
-     * @param entity The domain class to bind
-     * @param mappings    The existing mappings
-     * @param sessionFactoryBeanName  the session factory bean name
-     * @throws MappingException Thrown if the domain class uses inheritance 
which is not supported
-     */
-    public void bindClass(@Nonnull PersistentEntity entity, @Nonnull 
InFlightMetadataCollector mappings, String sessionFactoryBeanName)
-            throws MappingException {
-        //if (domainClass.getClazz().getSuperclass() == Object.class) {
-        if (entity.isRoot()) {
-            bindRoot((GrailsHibernatePersistentEntity) entity, mappings, 
sessionFactoryBeanName);
-        }
-    }
-
-
-
 
     /**
      * Binds a root class (one with no super classes) to the runtime meta model
@@ -449,8 +390,8 @@ public class GrailsDomainBinder
                                       InFlightMetadataCollector mappings, 
Mapping gormMapping, String sessionFactoryBeanName) {
         classBinding.bindClass(sub, joinedSubclass, mappings);
 
-        String schemaName = new 
NamespaceNameExtractor().getSchemaName(mappings);
-        String catalogName = new 
NamespaceNameExtractor().getCatalogName(mappings);
+        String schemaName = NamespaceNameExtractor.getSchemaName(mappings);
+        String catalogName = NamespaceNameExtractor.getCatalogName(mappings);
 
         Table mytable = mappings.addTable(
                 schemaName, catalogName,
@@ -481,8 +422,8 @@ public class GrailsDomainBinder
         String logicalTableName = 
GrailsHibernateUtil.unqualify(model.getEntityName());
         String physicalTableName = new 
TableNameFetcher(getNamingStrategy()).getTableName(sub);
 
-        String schemaName = new 
NamespaceNameExtractor().getSchemaName(mappings);
-        String catalogName = new 
NamespaceNameExtractor().getCatalogName(mappings);
+        String schemaName = NamespaceNameExtractor.getSchemaName(mappings);
+        String catalogName = NamespaceNameExtractor.getCatalogName(mappings);
 
         mappings.addTableNameBinding(schemaName, catalogName, 
logicalTableName, physicalTableName, denormalizedSuperTable);
         return physicalTableName;
@@ -565,7 +506,9 @@ public class GrailsDomainBinder
      */
     private RootClass bindRootPersistentClassCommonValues(@Nonnull 
GrailsHibernatePersistentEntity domainClass,
                                                        @Nonnull 
java.util.Collection<GrailsHibernatePersistentEntity> children,
-                                                       @Nonnull 
InFlightMetadataCollector mappings, String sessionFactoryBeanName) {
+                                                       @Nonnull 
InFlightMetadataCollector mappings,
+                                                       String 
sessionFactoryBeanName
+    ) {
 
         RootClass root = new RootClass(this.metadataBuildingContext);
         root.setAbstract(domainClass.isAbstract());
@@ -590,16 +533,13 @@ public class GrailsDomainBinder
         root.setDynamicInsert(gormMapping.getDynamicInsert());
 
 
-        var schema = ofNullable(gormMapping.getTable())
-                .map(org.grails.orm.hibernate.cfg.Table::getSchema)
-                .orElse(new NamespaceNameExtractor().getSchemaName(mappings));
+        var schema = domainClass.getSchema(mappings);
 
-        var catalog = ofNullable(gormMapping.getTable())
-                .map(org.grails.orm.hibernate.cfg.Table::getCatalog)
-                .orElse(new NamespaceNameExtractor().getCatalogName(mappings));
+        var catalog = domainClass.getCatalog(mappings);
 
 
         var isAbstract = !gormMapping.getTablePerHierarchy() && 
gormMapping.isTablePerConcreteClass() && root.isAbstract();
+
         // create the table
         var table = mappings.addTable(schema
                 , catalog
@@ -622,9 +562,9 @@ public class GrailsDomainBinder
 
 
 
-    public void bindIdentity(
+    private void bindIdentity(
             @Nonnull GrailsHibernatePersistentEntity domainClass,
-            RootClass root,
+            @Nonnull RootClass root,
             @Nonnull InFlightMetadataCollector mappings,
             Mapping gormMapping,
             String sessionFactoryBeanName) {
diff --git 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/GrailsHibernatePersistentEntity.java
 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/GrailsHibernatePersistentEntity.java
index 659f8a476a..b7ad2a50b7 100644
--- 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/GrailsHibernatePersistentEntity.java
+++ 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/GrailsHibernatePersistentEntity.java
@@ -3,6 +3,14 @@ package org.grails.orm.hibernate.cfg;
 import java.util.List;
 import java.util.Objects;
 import java.util.Optional;
+import java.util.function.Function;
+
+import jakarta.annotation.Nonnull;
+
+import org.hibernate.boot.model.naming.Identifier;
+import org.hibernate.boot.model.relational.Database;
+import org.hibernate.boot.model.relational.Namespace;
+import org.hibernate.boot.spi.InFlightMetadataCollector;
 
 import org.grails.datastore.mapping.model.PersistentEntity;
 import org.grails.datastore.mapping.model.PersistentProperty;
@@ -10,6 +18,7 @@ import 
org.grails.datastore.mapping.model.config.GormProperties;
 import org.grails.datastore.mapping.model.types.TenantId;
 import 
org.grails.orm.hibernate.cfg.domainbinding.ConfigureDerivedPropertiesConsumer;
 import org.grails.orm.hibernate.cfg.domainbinding.DefaultColumnNameFetcher;
+import org.grails.orm.hibernate.cfg.domainbinding.NamespaceNameExtractor;
 
 /**
  * Common interface for Hibernate persistent entities
@@ -88,5 +97,20 @@ public interface GrailsHibernatePersistentEntity extends 
PersistentEntity {
                 .map(defaultColumnName -> ":tenantId = " + defaultColumnName)
                 .orElse(null);
     }
+    default String getSchema(@Nonnull InFlightMetadataCollector mappings) {
+        return Optional.ofNullable(getMappedForm())
+                .map(Mapping::getTable)
+                .map(org.grails.orm.hibernate.cfg.Table::getSchema)
+                .orElse(NamespaceNameExtractor.getSchemaName(mappings));
+
+    }
+
+    default String getCatalog(@Nonnull InFlightMetadataCollector mappings) {
+        return Optional.ofNullable(getMappedForm())
+                .map(Mapping::getTable)
+                .map(org.grails.orm.hibernate.cfg.Table::getCatalog)
+                .orElse(NamespaceNameExtractor.getCatalogName(mappings));
+
+    }
+}
 
-}
\ No newline at end of file
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 2a9b4ed21a..942cc146be 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
@@ -141,8 +141,8 @@ public class CollectionBinder {
         String s = new 
TableForManyCalculator(namingStrategy).calculateTableForMany(property);
         String tableName = (jt != null && jt.getName() != null ? jt.getName() 
: namingStrategy.resolveTableName(s));
 
-        String schemaName = new 
NamespaceNameExtractor().getSchemaName(mappings);
-        String catalogName = new 
NamespaceNameExtractor().getCatalogName(mappings);
+        String schemaName = NamespaceNameExtractor.getSchemaName(mappings);
+        String catalogName = NamespaceNameExtractor.getCatalogName(mappings);
         if(jt != null) {
             if(jt.getSchema() != null) {
                 schemaName = jt.getSchema();
diff --git 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/CompositeIdBinder.java
 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/CompositeIdBinder.java
index 7fbbf0fdae..2ec2685203 100644
--- 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/CompositeIdBinder.java
+++ 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/CompositeIdBinder.java
@@ -24,10 +24,6 @@ public class CompositeIdBinder {
         this.componentPropertyBinder = componentPropertyBinder;
     }
 
-    protected CompositeIdBinder() {
-        this.metadataBuildingContext = null;
-        this.componentPropertyBinder = null;
-    }
 
     public void bindCompositeId(@Nonnull PersistentEntity domainClass, 
RootClass root,
                                  CompositeIdentity compositeIdentity, @Nonnull 
InFlightMetadataCollector mappings, String sessionFactoryBeanName) {
diff --git 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/NamespaceNameExtractor.java
 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/NamespaceNameExtractor.java
index 68137f5a25..9da91e07d0 100644
--- 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/NamespaceNameExtractor.java
+++ 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/NamespaceNameExtractor.java
@@ -13,18 +13,18 @@ import java.util.function.Function;
 public class NamespaceNameExtractor {
 
 
-    public String getCatalogName(@Nonnull InFlightMetadataCollector mappings) {
+    public static String getCatalogName(@Nonnull InFlightMetadataCollector 
mappings) {
         return getNamespaceName(mappings, Namespace.Name::getCatalog);
     }
 
-    public String getSchemaName(@Nonnull InFlightMetadataCollector mappings) {
+    public static String getSchemaName(@Nonnull InFlightMetadataCollector 
mappings) {
         return getNamespaceName(mappings, Namespace.Name::getSchema);
     }
 
 
 
 
-    public String  getNamespaceName(
+    private static String  getNamespaceName(
             @Nonnull InFlightMetadataCollector mappings, 
Function<Namespace.Name, Identifier> function
     ) {
         return Optional.ofNullable(mappings.getDatabase())
@@ -32,7 +32,6 @@ public class NamespaceNameExtractor {
                 .map(Namespace::getName)
                 .map(function)
                 .map(Identifier::getCanonicalName)
-                .orElse(null)
-                ;
+                .orElse(null);
     }
 }
diff --git 
a/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/NamespaceNameExtractorSpec.groovy
 
b/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/NamespaceNameExtractorSpec.groovy
index 69e006f6f3..10abae5e29 100644
--- 
a/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/NamespaceNameExtractorSpec.groovy
+++ 
b/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/NamespaceNameExtractorSpec.groovy
@@ -16,9 +16,6 @@ import spock.lang.Unroll
  */
 class NamespaceNameExtractorSpec extends Specification {
 
-    @Subject
-    NamespaceNameExtractor extractor = new NamespaceNameExtractor()
-
     // --- Tests for getSchemaName ---
 
     def "should return the schema name when the full object graph exists"() {
@@ -37,7 +34,7 @@ class NamespaceNameExtractorSpec extends Specification {
         mockSchemaIdentifier.getCanonicalName() >> expectedSchema
 
         when: "the schema name is extracted"
-        def result = extractor.getSchemaName(mockMappings)
+        def result = NamespaceNameExtractor.getSchemaName(mockMappings)
 
         then: "the correct schema name is returned"
         result == expectedSchema
@@ -74,7 +71,7 @@ class NamespaceNameExtractorSpec extends Specification {
         }
 
         when: "the schema name is extracted"
-        def result = extractor.getSchemaName(mockMappings)
+        def result = NamespaceNameExtractor.getSchemaName(mockMappings)
 
         then: "the result is null"
         result == null
@@ -105,7 +102,7 @@ class NamespaceNameExtractorSpec extends Specification {
         mockCatalogIdentifier.getCanonicalName() >> expectedCatalog
 
         when: "the catalog name is extracted"
-        def result = extractor.getCatalogName(mockMappings)
+        def result = NamespaceNameExtractor.getCatalogName(mockMappings)
 
         then: "the correct catalog name is returned"
         result == expectedCatalog
@@ -140,7 +137,7 @@ class NamespaceNameExtractorSpec extends Specification {
         }
 
         when: "the catalog name is extracted"
-        def result = extractor.getCatalogName(mockMappings)
+        def result = NamespaceNameExtractor.getCatalogName(mockMappings)
 
         then: "the result is null"
         result == null

Reply via email to