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