This is an automated email from the ASF dual-hosted git repository. borinquenkid pushed a commit to branch 8.0.x-hibernate7-dev in repository https://gitbox.apache.org/repos/asf/grails-core.git
commit d29d3122c237c17c6f21a9df42a6b05c33113593 Author: Walter Duque de Estrada <[email protected]> AuthorDate: Thu Mar 5 07:50:56 2026 -0600 cleanup(hibernate7): ConfigureDerivedPropertiesConsumer --- .../util/ConfigureDerivedPropertiesConsumer.java | 5 +- .../ConfigureDerivedPropertiesConsumerSpec.groovy | 68 ++++++++++++---------- 2 files changed, 41 insertions(+), 32 deletions(-) diff --git a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/util/ConfigureDerivedPropertiesConsumer.java b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/util/ConfigureDerivedPropertiesConsumer.java index 2c22d58277..e870c85e84 100644 --- a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/util/ConfigureDerivedPropertiesConsumer.java +++ b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/util/ConfigureDerivedPropertiesConsumer.java @@ -24,8 +24,9 @@ import java.util.Objects; import java.util.function.Consumer; import org.grails.datastore.mapping.model.PersistentProperty; import org.grails.orm.hibernate.cfg.Mapping; +import org.grails.orm.hibernate.cfg.domainbinding.hibernate.HibernatePersistentProperty; -public class ConfigureDerivedPropertiesConsumer implements Consumer<PersistentProperty> { +public class ConfigureDerivedPropertiesConsumer implements Consumer<HibernatePersistentProperty> { private final Mapping m; @@ -34,7 +35,7 @@ public class ConfigureDerivedPropertiesConsumer implements Consumer<PersistentPr } @Override - public void accept(PersistentProperty persistentProperty) { + public void accept(HibernatePersistentProperty persistentProperty) { ofNullable(m.getPropertyConfig(persistentProperty.getName())) .ifPresent( propertyConfig -> diff --git a/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/ConfigureDerivedPropertiesConsumerSpec.groovy b/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/ConfigureDerivedPropertiesConsumerSpec.groovy index 3c340ed18f..8928764bb8 100644 --- a/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/ConfigureDerivedPropertiesConsumerSpec.groovy +++ b/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/ConfigureDerivedPropertiesConsumerSpec.groovy @@ -1,31 +1,37 @@ package org.grails.orm.hibernate.cfg.domainbinding import grails.gorm.specs.HibernateGormDatastoreSpec -import org.grails.datastore.mapping.model.PersistentProperty -import org.grails.orm.hibernate.cfg.Mapping -import org.grails.orm.hibernate.cfg.PropertyConfig +import grails.gorm.hibernate.HibernateEntity +import org.grails.orm.hibernate.cfg.domainbinding.hibernate.HibernatePersistentProperty import spock.lang.Subject import org.grails.orm.hibernate.cfg.domainbinding.util.ConfigureDerivedPropertiesConsumer class ConfigureDerivedPropertiesConsumerSpec extends HibernateGormDatastoreSpec { + HibernatePersistentProperty titleProperty + + def setupSpec() { + manager.addAllDomainClasses([CDPCBook]) + } + + def setup() { + titleProperty = mappingContext.getPersistentEntity(CDPCBook.name) + .persistentProperties.find { it.name == 'title' } as HibernatePersistentProperty + } + def "should set derived to true if formula is present"() { given: - def mapping = Mock(Mapping) - def propConfig = new PropertyConfig() - propConfig.setFormula("some SQL formula") - - def persistentProperty = Mock(PersistentProperty) - persistentProperty.getName() >> "derivedProp" - - mapping.getPropertyConfig("derivedProp") >> propConfig - + def mapping = mappingContext.getPersistentEntity(CDPCBook.name).mappedForm + def propConfig = new org.grails.orm.hibernate.cfg.PropertyConfig() + propConfig.formula = "upper(title)" + mapping.columns['title'] = propConfig + @Subject def consumer = new ConfigureDerivedPropertiesConsumer(mapping) when: - consumer.accept(persistentProperty) + consumer.accept(titleProperty) then: propConfig.isDerived() == true @@ -33,20 +39,16 @@ class ConfigureDerivedPropertiesConsumerSpec extends HibernateGormDatastoreSpec def "should set derived to false if formula is null"() { given: - def mapping = Mock(Mapping) - def propConfig = new PropertyConfig() - propConfig.setFormula(null) - - def persistentProperty = Mock(PersistentProperty) - persistentProperty.getName() >> "nonDerivedProp" - - mapping.getPropertyConfig("nonDerivedProp") >> propConfig - + def mapping = mappingContext.getPersistentEntity(CDPCBook.name).mappedForm + def propConfig = new org.grails.orm.hibernate.cfg.PropertyConfig() + propConfig.formula = null + mapping.columns['title'] = propConfig + @Subject def consumer = new ConfigureDerivedPropertiesConsumer(mapping) when: - consumer.accept(persistentProperty) + consumer.accept(titleProperty) then: propConfig.isDerived() == false @@ -54,19 +56,25 @@ class ConfigureDerivedPropertiesConsumerSpec extends HibernateGormDatastoreSpec def "should do nothing if property configuration is missing"() { given: - def mapping = Mock(Mapping) - def persistentProperty = Mock(PersistentProperty) - persistentProperty.getName() >> "missingProp" - - mapping.getPropertyConfig("missingProp") >> null - + def mapping = mappingContext.getPersistentEntity(CDPCBook.name).mappedForm + @Subject def consumer = new ConfigureDerivedPropertiesConsumer(mapping) + // use a property name with no PropertyConfig entry + HibernatePersistentProperty idProp = mappingContext + .getPersistentEntity(CDPCBook.name).identity as HibernatePersistentProperty + when: - consumer.accept(persistentProperty) + consumer.accept(idProp) then: noExceptionThrown() } } + +class CDPCBook implements HibernateEntity<CDPCBook> { + Long id + Long version + String title +}
