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 03aaad881355ea0939b14850238488670d061064 Author: Walter Duque de Estrada <[email protected]> AuthorDate: Sat Mar 7 13:03:00 2026 -0600 hibernate7: more Codenarc --- .../hibernate/HibernateMappingBuilder.groovy | 5 +- .../hibernate/HibernateMappingKeyword.groovy | 75 ++++++++++++++++++++++ .../mapping/HibernateMappingBuilderTests.groovy | 20 +++--- 3 files changed, 90 insertions(+), 10 deletions(-) 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 1ecfed48dd..8ad9b0fd05 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 @@ -462,9 +462,10 @@ class HibernateMappingBuilder implements MappingConfigurationBuilder<Mapping, Pr Object firstArg = hasArgs ? argsArray[0] : null Object lastArg = argc > 0 ? argsArray[argc - 1] : null - if (name == 'user-type' && hasArgs && firstArg instanceof Map) { + HibernateMappingKeyword keyword = HibernateMappingKeyword.fromString(name) + if (keyword == HibernateMappingKeyword.USER_TYPE && hasArgs && firstArg instanceof Map) { hibernateCustomUserType((Map<String, Object>) firstArg) - } else if (name == 'importFrom' && hasArgs && firstArg instanceof Class) { + } else if (keyword == HibernateMappingKeyword.IMPORT_FROM && hasArgs && firstArg instanceof Class) { List<Closure> constraintsToImport = ClassPropertyFetcher.getStaticPropertyValuesFromInheritanceHierarchy( (Class) firstArg, GormProperties.CONSTRAINTS, Closure) if (constraintsToImport) { diff --git a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/hibernate/HibernateMappingKeyword.groovy b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/hibernate/HibernateMappingKeyword.groovy new file mode 100644 index 0000000000..c745f28605 --- /dev/null +++ b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/hibernate/HibernateMappingKeyword.groovy @@ -0,0 +1,75 @@ +/* + * Copyright 2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.grails.orm.hibernate.cfg.domainbinding.hibernate + +import groovy.transform.CompileStatic + +/** + * Enum representing the supported keywords in the Hibernate ORM mapping DSL. + * + * @author walter.duquedeestrada + * @since 7.0 + */ +@CompileStatic +enum HibernateMappingKeyword { + INCLUDES('includes'), + HIBERNATE_CUSTOM_USER_TYPE('hibernateCustomUserType'), + TABLE('table'), + DISCRIMINATOR('discriminator'), + AUTO_IMPORT('autoImport'), + SORT('sort'), + AUTOWIRE('autowire'), + DYNAMIC_UPDATE('dynamicUpdate'), + DYNAMIC_INSERT('dynamicInsert'), + BATCH_SIZE('batchSize'), + ORDER('order'), + AUTO_TIMESTAMP('autoTimestamp'), + VERSION('version'), + TENANT_ID('tenantId'), + CACHE('cache'), + TABLE_PER_HIERARCHY('tablePerHierarchy'), + TABLE_PER_SUBCLASS('tablePerSubclass'), + TABLE_PER_CONCRETE_CLASS('tablePerConcreteClass'), + ID('id'), + PROPERTY('property'), + COLUMNS('columns'), + DATASOURCE('datasource'), + DATASOURCES('datasources'), + COMMENT('comment'), + USER_TYPE('user-type'), + IMPORT_FROM('importFrom') + + private final String keyword + + HibernateMappingKeyword(String keyword) { + this.keyword = keyword + } + + String getKeyword() { + return keyword + } + + @Override + String toString() { + return keyword + } + + private static final Map<String, HibernateMappingKeyword> KEYWORDS = values().collectEntries { [it.keyword, it] } + + static HibernateMappingKeyword fromString(String name) { + return KEYWORDS[name] + } +} 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 2e34e104fa..efa5a72013 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 @@ -18,6 +18,8 @@ */ package grails.gorm.hibernate.mapping +import java.sql.Clob + import org.grails.orm.hibernate.cfg.CompositeIdentity import org.grails.orm.hibernate.cfg.domainbinding.hibernate.HibernateMappingBuilder import org.grails.orm.hibernate.cfg.PropertyConfig @@ -658,11 +660,13 @@ class HibernateMappingBuilderTests { version false id composite:['one','two'], compositeClass:HibernateMappingBuilder } + def compositeId = mapping.identity + + assert compositeId instanceof CompositeIdentity - assert mapping.identity instanceof CompositeIdentity - assertEquals "one", mapping.identity.propertyNames[0] - assertEquals "two", mapping.identity.propertyNames[1] - assertEquals HibernateMappingBuilder, mapping.identity.compositeClass + assertEquals( "one", compositeId.propertyNames[0]) + assertEquals "two", compositeId.propertyNames[1] + assertEquals HibernateMappingBuilder, compositeId.compositeClass } @Test @@ -705,7 +709,7 @@ class HibernateMappingBuilderTests { firstName column:'First_Name', lazy:true, unique:true, - type: java.sql.Clob, + type: Clob, length:255, index:'foo', sqlType: 'text' @@ -717,7 +721,7 @@ class HibernateMappingBuilderTests { assertEquals "First_Name",mapping.columns.firstName.column assertTrue mapping.columns.firstName.lazy assertTrue mapping.columns.firstName.unique - assertEquals java.sql.Clob,mapping.columns.firstName.type + assertEquals Clob,mapping.columns.firstName.type assertEquals 255,mapping.columns.firstName.length assertEquals 'foo',mapping.columns.firstName.getIndexName() assertEquals "text",mapping.columns.firstName.sqlType @@ -733,7 +737,7 @@ class HibernateMappingBuilderTests { firstName column:'First_Name', lazy:true, unique:true, - type: java.sql.Clob, + type: Clob, length:255, index:'foo', sqlType: 'text' @@ -744,7 +748,7 @@ class HibernateMappingBuilderTests { assertEquals "First_Name",mapping.columns.firstName.column assertTrue mapping.columns.firstName.lazy assertTrue mapping.columns.firstName.unique - assertEquals java.sql.Clob,mapping.columns.firstName.type + assertEquals Clob,mapping.columns.firstName.type assertEquals 255,mapping.columns.firstName.length assertEquals 'foo',mapping.columns.firstName.getIndexName() assertEquals "text",mapping.columns.firstName.sqlType
