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/02/14 18:54:03 UTC
(grails-core) 09/18: refactored BasicValueIdCreator by removing GrailsHibernatePersistentEntity from its constructor and instead passing it as an argument to getBasicValueId, which then forwards it to createGenerator. I also updated the BasicValueIdCreator constructor to take Table as its final argument
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 e7b30f938668017a54046c37694c32eb84e53b86
Author: Walter Duque de Estrada <wb...@mac.com>
AuthorDate: Fri Feb 13 15:00:16 2026 -0600
refactored BasicValueIdCreator by removing GrailsHibernatePersistentEntity from its constructor and instead passing it as an argument to getBasicValueId, which then forwards it to createGenerator. I
also updated the BasicValueIdCreator constructor to take Table as its final argument
---
.../cfg/domainbinding/binder/IdentityBinder.java | 5 -----
.../cfg/domainbinding/binder/SimpleIdBinder.java | 4 ++--
.../domainbinding/util/BasicValueIdCreator.java | 10 ++++-----
.../domainbinding/BasicValueIdCreatorSpec.groovy | 26 +++++++++++++---------
.../cfg/domainbinding/SimpleIdBinderSpec.groovy | 2 +-
5 files changed, 23 insertions(+), 24 deletions(-)
diff --git a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/IdentityBinder.java b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/IdentityBinder.java
index 9960aa9de4..e6559afaa9 100644
--- a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/IdentityBinder.java
+++ b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/IdentityBinder.java
@@ -31,11 +31,6 @@ public class IdentityBinder {
this.compositeIdBinder = compositeIdBinder;
}
- protected IdentityBinder() {
- this.simpleIdBinder = null;
- this.compositeIdBinder = null;
- }
-
public void bindIdentity(
@Nonnull GrailsHibernatePersistentEntity domainClass,
RootClass root,
diff --git a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/SimpleIdBinder.java b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/SimpleIdBinder.java
index 0dba050694..71bb2c66a2 100644
--- a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/SimpleIdBinder.java
+++ b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/SimpleIdBinder.java
@@ -51,8 +51,8 @@ public class SimpleIdBinder {
boolean useSequence = result != null && result.isTablePerConcreteClass();
// create the id value
- BasicValueIdCreator idCreator = this.basicValueIdCreator != null ? this.basicValueIdCreator : new BasicValueIdCreator(metadataBuildingContext, jdbcEnvironment, domainClass, entity.getTable());
- BasicValue id = idCreator.getBasicValueId(mappedId, useSequence);
+ BasicValueIdCreator idCreator = this.basicValueIdCreator != null ? this.basicValueIdCreator : new BasicValueIdCreator(metadataBuildingContext, jdbcEnvironment, entity.getTable());
+ BasicValue id = idCreator.getBasicValueId(mappedId, domainClass, useSequence);
var identifier = domainClass.getIdentity();
if (mappedId != null) {
diff --git a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/util/BasicValueIdCreator.java b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/util/BasicValueIdCreator.java
index cd3604a7de..75090e6339 100644
--- a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/util/BasicValueIdCreator.java
+++ b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/util/BasicValueIdCreator.java
@@ -15,16 +15,14 @@ import org.grails.orm.hibernate.cfg.domainbinding.generator.GrailsSequenceWrappe
public class BasicValueIdCreator {
private final JdbcEnvironment jdbcEnvironment;
- private GrailsHibernatePersistentEntity domainClass;
@SuppressWarnings("unused") // kept for tests that want to provide a prototype BasicValue
private final BasicValue id;
private final GrailsSequenceWrapper grailsSequenceWrapper;
- public BasicValueIdCreator(MetadataBuildingContext metadataBuildingContext, JdbcEnvironment jdbcEnvironment, GrailsHibernatePersistentEntity domainClass, Table table) {
+ public BasicValueIdCreator(MetadataBuildingContext metadataBuildingContext, JdbcEnvironment jdbcEnvironment, Table table) {
// create a prototype BasicValue (table will be set per-entity when creating the actual BasicValue)
this.id = new BasicValue(metadataBuildingContext, table);
this.jdbcEnvironment = jdbcEnvironment;
- this.domainClass = domainClass;
this.grailsSequenceWrapper = new GrailsSequenceWrapper();
}
@@ -39,14 +37,14 @@ public class BasicValueIdCreator {
}
- public BasicValue getBasicValueId(Identity mappedId, boolean useSequence) {
+ public BasicValue getBasicValueId(Identity mappedId, GrailsHibernatePersistentEntity domainClass, boolean useSequence) {
// create a BasicValue for the specific entity table (do not reuse the prototype directly because table differs)
String generatorName = Identity.determineGeneratorName(mappedId, useSequence);
- id.setCustomIdGeneratorCreator(context -> createGenerator(mappedId, context, generatorName));
+ id.setCustomIdGeneratorCreator(context -> createGenerator(mappedId, domainClass, context, generatorName));
return id;
}
- private Generator createGenerator(Identity mappedId, GeneratorCreationContext context, String generatorName) {
+ private Generator createGenerator(Identity mappedId, GrailsHibernatePersistentEntity domainClass, GeneratorCreationContext context, String generatorName) {
return grailsSequenceWrapper.getGenerator(generatorName, context, mappedId, domainClass, jdbcEnvironment);
}
}
diff --git a/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/BasicValueIdCreatorSpec.groovy b/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/BasicValueIdCreatorSpec.groovy
index 1271ebf097..0446618c62 100644
--- a/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/BasicValueIdCreatorSpec.groovy
+++ b/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/BasicValueIdCreatorSpec.groovy
@@ -3,6 +3,7 @@ package org.grails.orm.hibernate.cfg.domainbinding
import org.hibernate.engine.jdbc.env.spi.JdbcEnvironment
import grails.gorm.specs.HibernateGormDatastoreSpec
+import org.grails.orm.hibernate.cfg.GrailsHibernatePersistentEntity
import org.grails.orm.hibernate.cfg.Identity
import org.hibernate.boot.spi.MetadataBuildingContext
import org.hibernate.generator.Generator
@@ -43,16 +44,17 @@ class BasicValueIdCreatorSpec extends HibernateGormDatastoreSpec {
given:
Identity mappedId = new Identity()
mappedId.setGenerator(generatorName)
+ def domainClass = Mock(GrailsHibernatePersistentEntity)
def mockGenerator = Mock(Generator)
def context = Mock(GeneratorCreationContext)
when:
- BasicValue id = creator.getBasicValueId(mappedId, useSequence)
+ BasicValue id = creator.getBasicValueId(mappedId, domainClass, useSequence)
def generatorCreator = id.getCustomIdGeneratorCreator()
Generator generator = generatorCreator.createGenerator(context)
then:
- 1 * grailsSequenceWrapper.getGenerator(generatorName, context, mappedId, _, jdbcEnvironment) >> mockGenerator
+ 1 * grailsSequenceWrapper.getGenerator(generatorName, context, mappedId, domainClass, jdbcEnvironment) >> mockGenerator
generator == mockGenerator
where:
@@ -72,30 +74,32 @@ class BasicValueIdCreatorSpec extends HibernateGormDatastoreSpec {
def "should default to native generator when mappedId is null"() {
given:
def mockGenerator = Mock(Generator)
+ def domainClass = Mock(GrailsHibernatePersistentEntity)
def context = Mock(GeneratorCreationContext)
when:
- BasicValue id = creator.getBasicValueId(null, false)
+ BasicValue id = creator.getBasicValueId(null, domainClass, false)
def generatorCreator = id.getCustomIdGeneratorCreator()
Generator generator = generatorCreator.createGenerator(context)
then:
- 1 * grailsSequenceWrapper.getGenerator(GrailsSequenceGeneratorEnum.NATIVE.toString(), context, null, _, jdbcEnvironment) >> mockGenerator
+ 1 * grailsSequenceWrapper.getGenerator(GrailsSequenceGeneratorEnum.NATIVE.toString(), context, null, domainClass, jdbcEnvironment) >> mockGenerator
generator == mockGenerator
}
def "should default to sequence-identity when mappedId is null and useSequence is true"() {
given:
def mockGenerator = Mock(Generator)
+ def domainClass = Mock(GrailsHibernatePersistentEntity)
def context = Mock(GeneratorCreationContext)
when:
- BasicValue id = creator.getBasicValueId(null, true)
+ BasicValue id = creator.getBasicValueId(null, domainClass, true)
def generatorCreator = id.getCustomIdGeneratorCreator()
Generator generator = generatorCreator.createGenerator(context)
then:
- 1 * grailsSequenceWrapper.getGenerator(GrailsSequenceGeneratorEnum.SEQUENCE_IDENTITY.toString(), context, null, _, jdbcEnvironment) >> mockGenerator
+ 1 * grailsSequenceWrapper.getGenerator(GrailsSequenceGeneratorEnum.SEQUENCE_IDENTITY.toString(), context, null, domainClass, jdbcEnvironment) >> mockGenerator
generator == mockGenerator
}
@@ -104,15 +108,16 @@ class BasicValueIdCreatorSpec extends HibernateGormDatastoreSpec {
Identity mappedId = new Identity()
mappedId.setGenerator(GrailsSequenceGeneratorEnum.NATIVE.toString())
def mockGenerator = Mock(Generator)
+ def domainClass = Mock(GrailsHibernatePersistentEntity)
def context = Mock(GeneratorCreationContext)
when:
- BasicValue id = creator.getBasicValueId(mappedId, true)
+ BasicValue id = creator.getBasicValueId(mappedId, domainClass, true)
def generatorCreator = id.getCustomIdGeneratorCreator()
Generator generator = generatorCreator.createGenerator(context)
then:
- 1 * grailsSequenceWrapper.getGenerator(GrailsSequenceGeneratorEnum.SEQUENCE_IDENTITY.toString(), context, mappedId, _, jdbcEnvironment) >> mockGenerator
+ 1 * grailsSequenceWrapper.getGenerator(GrailsSequenceGeneratorEnum.SEQUENCE_IDENTITY.toString(), context, mappedId, domainClass, jdbcEnvironment) >> mockGenerator
generator == mockGenerator
}
@@ -120,14 +125,15 @@ class BasicValueIdCreatorSpec extends HibernateGormDatastoreSpec {
given:
Identity mappedId = new Identity()
mappedId.setGenerator("custom")
+ def domainClass = Mock(GrailsHibernatePersistentEntity)
def context = Mock(GeneratorCreationContext)
when:
- BasicValue id = creator.getBasicValueId(mappedId, false)
+ BasicValue id = creator.getBasicValueId(mappedId, domainClass, false)
def generatorCreator = id.getCustomIdGeneratorCreator()
generatorCreator.createGenerator(context)
then:
- 1 * grailsSequenceWrapper.getGenerator("custom", context, mappedId, _, jdbcEnvironment) >> Mock(Generator)
+ 1 * grailsSequenceWrapper.getGenerator("custom", context, mappedId, domainClass, jdbcEnvironment) >> Mock(Generator)
}
}
diff --git a/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/SimpleIdBinderSpec.groovy b/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/SimpleIdBinderSpec.groovy
index 9880baaa67..30511a1f3c 100644
--- a/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/SimpleIdBinderSpec.groovy
+++ b/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/SimpleIdBinderSpec.groovy
@@ -35,7 +35,7 @@ class SimpleIdBinderSpec extends HibernateGormDatastoreSpec {
// Use a Mock for BasicValueIdCreator and return a BasicValue based on the currentTable
basicValueIdCreator = Mock(BasicValueIdCreator)
- basicValueIdCreator.getBasicValueId(*_) >> { Identity id, boolean useSeq ->
+ basicValueIdCreator.getBasicValueId(_, _, _) >> { Identity id, GrailsHibernatePersistentEntity domainClass, boolean useSeq ->
new BasicValue(metadataBuildingContext, currentTable)
}