You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@grails.apache.org by bo...@apache.org on 2026/06/04 05:25:35 UTC

(grails-core) 13/16: refactor(gorm): resolve duplication in GormStaticApi transaction methods and clean up MultiTenant static references

This is an automated email from the ASF dual-hosted git repository.

borinquenkid pushed a commit to branch 8.0.x-hibernate7.gorm-registry-refactor
in repository https://gitbox.apache.org/repos/asf/grails-core.git

commit 25f51616c831f283d59dfaa378625bf0a80010a3
Author: Walter Duque de Estrada <wb...@mac.com>
AuthorDate: Wed Jun 3 22:56:35 2026 -0500

    refactor(gorm): resolve duplication in GormStaticApi transaction methods and clean up MultiTenant static references
---
 .../src/main/groovy/grails/gorm/MultiTenant.groovy  |  6 +++---
 .../org/grails/datastore/gorm/GormStaticApi.groovy  | 21 ++++++++-------------
 2 files changed, 11 insertions(+), 16 deletions(-)

diff --git a/grails-datamapping-core/src/main/groovy/grails/gorm/MultiTenant.groovy b/grails-datamapping-core/src/main/groovy/grails/gorm/MultiTenant.groovy
index b85d45c8c8..600a36d276 100644
--- a/grails-datamapping-core/src/main/groovy/grails/gorm/MultiTenant.groovy
+++ b/grails-datamapping-core/src/main/groovy/grails/gorm/MultiTenant.groovy
@@ -44,7 +44,7 @@ trait MultiTenant<D> extends Entity {
      */
     @Generated
     static <T> T withTenant(Serializable tenantId, Closure<T> callable) {
-        GormRegistry.instance.findStaticApi((Class<D>) this).withTenant(tenantId, callable)
+        GormRegistry.findStaticApi((Class<D>) this).withTenant(tenantId, callable)
     }
 
     /**
@@ -55,7 +55,7 @@ trait MultiTenant<D> extends Entity {
      */
     @Generated
     static <D> GormAllOperations eachTenant(Closure callable) {
-        GormRegistry.instance.findStaticApi((Class<D>) this, ConnectionSource.DEFAULT).eachTenant(callable)
+        GormRegistry.findStaticApi((Class<D>) this, ConnectionSource.DEFAULT).eachTenant(callable)
     }
 
     /**
@@ -66,6 +66,6 @@ trait MultiTenant<D> extends Entity {
      */
     @Generated
     static <D> GormAllOperations<D> withTenant(Serializable tenantId) {
-        (GormAllOperations<D>) GormRegistry.instance.findStaticApi((Class<D>) this).withTenant(tenantId)
+        (GormAllOperations<D>) GormRegistry.findStaticApi((Class<D>) this).withTenant(tenantId)
     }
 }
diff --git a/grails-datamapping-core/src/main/groovy/org/grails/datastore/gorm/GormStaticApi.groovy b/grails-datamapping-core/src/main/groovy/org/grails/datastore/gorm/GormStaticApi.groovy
index 230bd72d42..e64b879106 100644
--- a/grails-datamapping-core/src/main/groovy/org/grails/datastore/gorm/GormStaticApi.groovy
+++ b/grails-datamapping-core/src/main/groovy/org/grails/datastore/gorm/GormStaticApi.groovy
@@ -646,22 +646,18 @@ class GormStaticApi<D> extends AbstractGormApi<D> implements GormAllOperations<D
 
     @Override
     <T1> T1 withTransaction(Map transactionProperties, Closure<T1> callable) {
-        DefaultTransactionDefinition definition = new DefaultTransactionDefinition()
-        transactionProperties.each { k, v ->
-            if (v instanceof CharSequence && !(v instanceof String)) {
-                v = v.toString()
-            }
-            try {
-                definition[k as String] = v
-            } catch (MissingPropertyException ignored) {
-                throw new IllegalArgumentException("[${k}] is not a valid transaction property.")
-            }
-        }
+        DefaultTransactionDefinition definition = createTransactionDefinition(transactionProperties)
         withTransaction(definition, callable)
     }
 
     @Override
     <T1> T1 withNewTransaction(Map transactionProperties, Closure<T1> callable) {
+        DefaultTransactionDefinition definition = createTransactionDefinition(transactionProperties)
+        definition.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRES_NEW)
+        withTransaction(definition, callable)
+    }
+
+    protected DefaultTransactionDefinition createTransactionDefinition(Map transactionProperties) {
         DefaultTransactionDefinition definition = new DefaultTransactionDefinition()
         transactionProperties.each { k, v ->
             if (v instanceof CharSequence && !(v instanceof String)) {
@@ -673,8 +669,7 @@ class GormStaticApi<D> extends AbstractGormApi<D> implements GormAllOperations<D
                 throw new IllegalArgumentException("[${k}] is not a valid transaction property.")
             }
         }
-        definition.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRES_NEW)
-        withTransaction(definition, callable)
+        return definition
     }
 
     @Override