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 ada4f05255c135416ec4ec3aa7f360a24f17af40 Author: Walter Duque de Estrada <[email protected]> AuthorDate: Sat Mar 7 12:43:43 2026 -0600 hibernate7: more Codenarc --- .../org/grails/orm/hibernate/cfg/Identity.groovy | 1 + .../grails/orm/hibernate/cfg/InstanceProxy.groovy | 5 +-- .../hibernate/HibernateMappingBuilder.groovy | 31 ++++++++-------- .../hibernate/support/HibernateRuntimeUtils.groovy | 41 +++++++++++++--------- .../mapping/HibernateMappingBuilderTests.groovy | 11 ++++++ 5 files changed, 55 insertions(+), 34 deletions(-) diff --git a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/Identity.groovy b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/Identity.groovy index 45039669ce..c4607aef98 100644 --- a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/Identity.groovy +++ b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/Identity.groovy @@ -35,6 +35,7 @@ import org.grails.orm.hibernate.cfg.domainbinding.generator.GrailsSequenceGenera @CompileStatic @Builder(builderStrategy = SimpleStrategy, prefix = '') class Identity extends Property implements HibernateIdentity { + /** * The generator to use */ diff --git a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/InstanceProxy.groovy b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/InstanceProxy.groovy index 5a544c0795..b7c9d0ec10 100644 --- a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/InstanceProxy.groovy +++ b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/InstanceProxy.groovy @@ -22,6 +22,7 @@ import org.grails.orm.hibernate.HibernateGormValidationApi @CompileStatic class InstanceProxy { + protected instance protected HibernateGormValidationApi validateApi protected HibernateGormInstanceApi instanceApi @@ -43,10 +44,10 @@ class InstanceProxy { def invokeMethod(String name, args) { if (validateMethods.contains(name)) { - validateApi.invokeMethod(name, prependToArray(instance, (Object[])args)) + validateApi.invokeMethod(name, prependToArray(instance, (Object[]) args)) } else { - instanceApi.invokeMethod(name, prependToArray(instance, (Object[])args)) + instanceApi.invokeMethod(name, prependToArray(instance, (Object[]) args)) } } diff --git a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/hibernate/HibernateMappingBuilder.groovy b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/hibernate/HibernateMappingBuilder.groovy index f97273b707..1ecfed48dd 100644 --- a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/hibernate/HibernateMappingBuilder.groovy +++ b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/hibernate/HibernateMappingBuilder.groovy @@ -161,7 +161,7 @@ class HibernateMappingBuilder implements MappingConfigurationBuilder<Mapping, Pr } void order(String direction) { - if ("desc".equalsIgnoreCase(direction) || "asc".equalsIgnoreCase(direction)) { + if ('desc'.equalsIgnoreCase(direction) || 'asc'.equalsIgnoreCase(direction)) { SortConfig sc = (SortConfig) mapping.getSort() sc.direction = direction } @@ -269,7 +269,7 @@ class HibernateMappingBuilder implements MappingConfigurationBuilder<Mapping, Pr } } if (!args.composite && args) { - handlePropertyInternal("id", args, null) + handlePropertyInternal('id', args, null) } } @@ -322,6 +322,7 @@ class HibernateMappingBuilder implements MappingConfigurationBuilder<Mapping, Pr Object orderVal = namedArgs.order if (orderVal != null) property.order = orderVal.toString() if (namedArgs.batchSize instanceof Integer) property.batchSize = (Integer) namedArgs.batchSize + if (namedArgs.batchSize instanceof Integer) property.batchSize = (Integer) namedArgs.batchSize if (namedArgs.ignoreNotFound instanceof Boolean) property.ignoreNotFound = (Boolean) namedArgs.ignoreNotFound if (namedArgs.params instanceof Map) { Properties typeProps = new Properties() @@ -345,8 +346,8 @@ class HibernateMappingBuilder implements MappingConfigurationBuilder<Mapping, Pr if (namedArgs.fetch) { String fetchStr = namedArgs.fetch.toString() - if (fetchStr.equalsIgnoreCase("join")) property.fetch = FetchMode.JOIN - else if (fetchStr.equalsIgnoreCase("select")) property.fetch = FetchMode.SELECT + if (fetchStr.equalsIgnoreCase('join')) property.fetch = FetchMode.JOIN + else if (fetchStr.equalsIgnoreCase('select')) property.fetch = FetchMode.SELECT else property.fetch = FetchMode.DEFAULT } @@ -358,27 +359,27 @@ class HibernateMappingBuilder implements MappingConfigurationBuilder<Mapping, Pr ColumnConfig cc = property.columns ? property.columns[0] : new ColumnConfig() if (!property.columns) property.columns << cc - Object colVal = namedArgs["column"] + Object colVal = namedArgs['column'] if (colVal) cc.name = colVal.toString() - Object sqlTypeVal = namedArgs["sqlType"] + Object sqlTypeVal = namedArgs['sqlType'] if (sqlTypeVal) cc.sqlType = sqlTypeVal.toString() - Object enumTypeVal = namedArgs["enumType"] + Object enumTypeVal = namedArgs['enumType'] if (enumTypeVal) cc.enumType = enumTypeVal.toString() - Object indexVal = namedArgs["index"] + Object indexVal = namedArgs['index'] if (indexVal) cc.index = indexVal.toString() - Object ccUniqueVal = namedArgs["unique"] + Object ccUniqueVal = namedArgs['unique'] if (ccUniqueVal) cc.unique = ccUniqueVal instanceof Boolean ? (Boolean) ccUniqueVal : ccUniqueVal - Object readVal = namedArgs["read"] + Object readVal = namedArgs['read'] if (readVal) cc.read = readVal.toString() - Object writeVal = namedArgs["write"] + Object writeVal = namedArgs['write'] if (writeVal) cc.write = writeVal.toString() Object defaultVal = namedArgs.defaultValue if (defaultVal) cc.defaultValue = defaultVal.toString() Object commentVal = namedArgs.comment if (commentVal) cc.comment = commentVal.toString() - if (namedArgs["length"] instanceof Integer) cc.length = (int) (Integer) namedArgs["length"] - if (namedArgs["precision"] instanceof Integer) cc.precision = (int) (Integer) namedArgs["precision"] - if (namedArgs["scale"] instanceof Integer) cc.scale = (int) (Integer) namedArgs["scale"] + if (namedArgs['length'] instanceof Integer) cc.length = (int) (Integer) namedArgs['length'] + if (namedArgs['precision'] instanceof Integer) cc.precision = (int) (Integer) namedArgs['precision'] + if (namedArgs['scale'] instanceof Integer) cc.scale = (int) (Integer) namedArgs['scale'] Object joinTableVal = namedArgs.joinTable if (joinTableVal instanceof String) { @@ -493,4 +494,4 @@ class HibernateMappingBuilder implements MappingConfigurationBuilder<Mapping, Pr handlePropertyInternal(name, namedArgs, sub) } } -} \ No newline at end of file +} diff --git a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/support/HibernateRuntimeUtils.groovy b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/support/HibernateRuntimeUtils.groovy index 7c6b39223a..89ae922716 100644 --- a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/support/HibernateRuntimeUtils.groovy +++ b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/support/HibernateRuntimeUtils.groovy @@ -17,6 +17,7 @@ import org.grails.datastore.mapping.model.config.GormProperties import org.grails.datastore.mapping.model.types.Association import org.grails.datastore.mapping.model.types.OneToOne import org.grails.datastore.mapping.validation.ValidationErrors + /** * Utility methods used at runtime by the GORM for Hibernate implementation * @@ -26,14 +27,15 @@ import org.grails.datastore.mapping.validation.ValidationErrors @CompileStatic class HibernateRuntimeUtils { - private static final String DYNAMIC_FILTER_ENABLER = "dynamicFilterEnabler" + private static final String DYNAMIC_FILTER_ENABLER = 'dynamicFilterEnabler' - @SuppressWarnings("rawtypes") + @SuppressWarnings('rawtypes') static void enableDynamicFilterEnablerIfPresent(SessionFactory sessionFactory, Session session) { if (sessionFactory != null && session != null) { final Set definedFilterNames = sessionFactory.getDefinedFilterNames() - if (definedFilterNames != null && definedFilterNames.contains(DYNAMIC_FILTER_ENABLER)) + if (definedFilterNames != null && definedFilterNames.contains(DYNAMIC_FILTER_ENABLER)) { session.enableFilter(DYNAMIC_FILTER_ENABLER) // work around for HHH-2624 + } } } @@ -52,11 +54,11 @@ class HibernateRuntimeUtils { def errors = new ValidationErrors(target) - Errors originalErrors = isGormValidateable ? ((GormValidateable)target).getErrors() : (Errors) metaClass.getProperty(target, GormProperties.ERRORS) + Errors originalErrors = isGormValidateable ? ((GormValidateable) target).getErrors() : (Errors) metaClass.getProperty(target, GormProperties.ERRORS) // Copy binding failures and any existing object-level errors for (Object o in originalErrors.allErrors) { if (o instanceof FieldError) { - FieldError fe = (FieldError)o + FieldError fe = (FieldError) o if (fe.isBindingFailure()) { errors.addError(new FieldError(fe.getObjectName(), fe.field, @@ -66,13 +68,14 @@ class HibernateRuntimeUtils { fe.arguments, fe.defaultMessage)) } - } else { + } + else { errors.addError((ObjectError) o) } } - if(isGormValidateable) { - ((GormValidateable)target).setErrors(errors) + if (isGormValidateable) { + ((GormValidateable) target).setErrors(errors) } else { metaClass.setProperty(target, GormProperties.ERRORS, errors) @@ -82,21 +85,19 @@ class HibernateRuntimeUtils { static void autoAssociateBidirectionalOneToOnes(PersistentEntity entity, Object target) { def mappingContext = entity.mappingContext - for (Association association : entity.associations) { + for (Association association : entity.associations) { if (!(association instanceof OneToOne) || !association.bidirectional || !association.owningSide) { continue } def propertyName = association.name - def otherSide = association.inverseSide if (otherSide == null) { continue } - def entityReflector = mappingContext.getEntityReflector(entity) Object inverseObject = entityReflector.getProperty(target, propertyName) if (inverseObject == null) { @@ -125,22 +126,28 @@ class HibernateRuntimeUtils { if (value instanceof Number && (targetType == Long || targetType == Integer)) { if (targetType == Long) { value = ((Number) value).toLong() - } else { + } + else { value = ((Number) value).toInteger() } - } else if (value instanceof String && Number.isAssignableFrom(targetType)) { + } + else if (value instanceof String && Number.isAssignableFrom(targetType)) { String strValue = value.trim() if (targetType == Long) { value = Long.parseLong(strValue) - } else if (targetType == Integer) { + } + else if (targetType == Integer) { value = Integer.parseInt(strValue) - } else { + } + else { value = StringGroovyMethods.asType(strValue, targetType as Class<Object>) } - } else { + } + else { value = conversionService.convert(value, targetType) } - } catch (ignored) { + } + catch (ignored) { // ignore } } diff --git a/grails-data-hibernate7/core/src/test/groovy/grails/gorm/hibernate/mapping/HibernateMappingBuilderTests.groovy b/grails-data-hibernate7/core/src/test/groovy/grails/gorm/hibernate/mapping/HibernateMappingBuilderTests.groovy index 3e6b9129d9..2e34e104fa 100644 --- a/grails-data-hibernate7/core/src/test/groovy/grails/gorm/hibernate/mapping/HibernateMappingBuilderTests.groovy +++ b/grails-data-hibernate7/core/src/test/groovy/grails/gorm/hibernate/mapping/HibernateMappingBuilderTests.groovy @@ -430,6 +430,17 @@ class HibernateMappingBuilderTests { assertFalse mapping.tablePerHierarchy } + @Test + void testTablePerConcreteClass() { + def builder = new HibernateMappingBuilder("Foo") + def mapping = builder.evaluate { + tablePerConcreteClass true + } + + assertTrue mapping.tablePerConcreteClass + assertFalse mapping.tablePerHierarchy + } + @Test void testAutoTimeStamp() { def builder = new HibernateMappingBuilder("Foo")
