Skip to content
Open
Show file tree
Hide file tree
Changes from 8 commits
Commits
Show all changes
76 commits
Select commit Hold shift + click to select a range
d55aff3
stage: clone hibernate5 modules to hibernate7 as baseline
jdaugherty May 11, 2026
4084938
Add missing hibernate7 test flags
jdaugherty May 11, 2026
ec859bf
rename spring orm source from hibernate5 -> hibernate7
jdaugherty May 12, 2026
214a291
hibernate6.gorm.suite -> hibernate7.gorm.suite
jdaugherty May 12, 2026
5ac6e2c
Add missing checks for hibernate7.gorm.suite
jdaugherty May 12, 2026
caa32c4
Remove import / switch back to javadoc
jdaugherty May 12, 2026
5112d89
Remove import / switch back to javadoc
jdaugherty May 12, 2026
ed0916d
Pull forward manager.addAllDomainClasses change
jdaugherty May 12, 2026
01c27f9
Pull forward package changes
jdaugherty May 12, 2026
c8cb43f
Pull forward base tck test
jdaugherty May 12, 2026
f18465a
fix codenarc violations
jdaugherty May 12, 2026
4c5c563
Fix import
jdaugherty May 12, 2026
fbe6d04
Fix negative check
jdaugherty May 13, 2026
ba6d0aa
Adopt gradle test aggregation reporting
jdaugherty May 14, 2026
0366b20
Pull forward liquibase-hibernate fork
jdaugherty May 14, 2026
a45a8e5
Skill file license cleanup
jdaugherty May 14, 2026
5f08705
Pull forward workflow target branch changes
jdaugherty May 14, 2026
4efa439
Pull forward styling fixes
jdaugherty May 14, 2026
4cbcd71
Pull forward hibernate6 reference removal
jdaugherty May 14, 2026
7771d73
Pull forward micronaut bom adoption for forge
jdaugherty May 14, 2026
d79c78b
Pull forward hibernate6 -> hibernate7 name fixes
jdaugherty May 14, 2026
fc7bfeb
Pull forward micronaut hibernate7 / hibernate5 bom split
jdaugherty May 14, 2026
153e555
Pull forward using testcontainers from the bom
jdaugherty May 14, 2026
954f89e
Pull forward styling changes in mongo
jdaugherty May 14, 2026
2641faf
Pull forward micronaut bom docs
jdaugherty May 14, 2026
89420e7
Pull forward code style settings
jdaugherty May 14, 2026
375e0b6
Pull forward hibernate7 doc ignore
jdaugherty May 14, 2026
02c169a
Pull forward license addition
jdaugherty May 14, 2026
88a5192
Pull forward remaining license for liquibase fork, bom selection, and…
jdaugherty May 14, 2026
ac007f3
Pull forward workaround for mongo (only use hibernate5 docs for now)
jdaugherty May 14, 2026
f9da7d5
Pull forward documentation update
jdaugherty May 14, 2026
d717f96
Pull forward dependency cleanup due to bom adoption
jdaugherty May 14, 2026
e3cad41
Pull forward async project cleanup
jdaugherty May 14, 2026
093f41e
Pull forward properties override, geb property override, workflow bra…
jdaugherty May 14, 2026
6c82efb
Pull forward styling fixes
jdaugherty May 14, 2026
4b5c6e9
Pull forward follow=true fix
jdaugherty May 14, 2026
a14af3a
Pull forward removal of transitive test dependency
jdaugherty May 14, 2026
8ab6e91
Pull forward removal of dead code
jdaugherty May 14, 2026
0a43922
Pull forward bom versions page
jdaugherty May 14, 2026
15f2be6
Pull forward test reformatting & domain defaults
jdaugherty May 14, 2026
81c434b
Pull forward styling changes
jdaugherty May 14, 2026
dbe666a
Pull forward bom adoption
jdaugherty May 14, 2026
4ba3d02
Pull forward bom envers
jdaugherty May 14, 2026
2c02980
Comment out dbmigration-core since it's really hibernate7 code
jdaugherty May 14, 2026
1c6a015
Fix WhereMethodSpec package import & bom ignores for micronaut
jdaugherty May 14, 2026
d8ca9dc
Pull forward spec changes
jdaugherty May 14, 2026
36d649e
Add missing license header
jdaugherty May 14, 2026
a951477
Remove invalid mappings
jdaugherty May 14, 2026
772415b
Pull forward multi-tenant test changes
jdaugherty May 14, 2026
37c2b90
Revert the hibernate7 code pull forward
jdaugherty May 14, 2026
bd741c6
Pull forward removal of Shared
jdaugherty May 14, 2026
7fc83fd
Pull forward test changes
jdaugherty May 14, 2026
58de59f
Pull forward compiler configuration since it's only a project rename
jdaugherty May 14, 2026
62befcd
Pull forward build artifact name changes
jdaugherty May 14, 2026
ee4ab14
Pull forward test changes
jdaugherty May 14, 2026
f76e090
Fix bad compareTo vs equals implementation
jdaugherty May 14, 2026
7ba9c67
Add missing domains
jdaugherty May 14, 2026
6bbe3b3
Pull forward test changes
jdaugherty May 14, 2026
982a4ea
Pull forward test styling
jdaugherty May 14, 2026
ec17b09
Fix tests for stage branch
jdaugherty May 14, 2026
7a410b3
Splitting analysis from style from code coverage & various associated…
jdaugherty May 16, 2026
af842ab
Add missing properties
jdaugherty May 17, 2026
f8d475c
Remove code analysis from forge since they dont' apply those plugins …
jdaugherty May 17, 2026
dfb255f
Updating analysis workflow
jdaugherty May 17, 2026
d959e4e
Expand test coverage for extending the criteria implementation with a…
jdaugherty May 17, 2026
5436ff0
Add more build directories to rat ignore config
jdaugherty May 17, 2026
340a1f1
Pull forward test lens fix
jdaugherty May 17, 2026
263f7ed
Fix bad merge
jdaugherty May 17, 2026
caeb724
Remove codememory skill reference for now
jdaugherty May 17, 2026
4eca4ca
Remove slf4j-simple
jdaugherty May 17, 2026
ada5f2a
Copy hibernate5 test to hibernate7
jdaugherty May 17, 2026
3fa03ac
Copy hibernate5 test to hibernate7
jdaugherty May 17, 2026
b04a50f
Copy hibernate5 test to hibernate7
jdaugherty May 17, 2026
1c61325
Merge branch '8.0.x' into 8.0.x-stage-hibernate7
jamesfredley May 20, 2026
39d64f1
Merge branch '8.0.x' into 8.0.x-stage-hibernate7
jamesfredley May 22, 2026
09f395c
Fix hibernate5Version property references in grails-test-examples/gra…
jamesfredley May 22, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
38 changes: 38 additions & 0 deletions .github/workflows/gradle.yml
Original file line number Diff line number Diff line change
Expand Up @@ -267,6 +267,7 @@ jobs:
-PonlyFunctionalTests
-PskipCodeStyle
-PskipHibernate5Tests
-PskipHibernate7Tests
-PskipMongodbTests
mongodbFunctional:
if: ${{ !contains(github.event.head_commit.message, '[skip tests]') }}
Expand Down Expand Up @@ -345,6 +346,43 @@ jobs:
-PgrailsIndy=${{ matrix.indy }}
-PonlyHibernate5Tests
-PskipCodeStyle
hibernate7Functional:
if: ${{ !contains(github.event.head_commit.message, '[skip tests]') }}
name: "Hibernate7 Functional Tests (Java ${{ matrix.java }}, indy=${{ matrix.indy }})"
runs-on: ubuntu-24.04
strategy:
fail-fast: false
matrix:
java: [ 21, 25 ]
indy: [ false ]
include:
- java: 21
indy: true
steps:
- name: "Output Agent IP" # in the event RAO blocks this agent, this can be used to debug it
run: curl -s https://api.ipify.org
- name: "📥 Checkout the repository"
uses: actions/checkout@v6
- name: "☕️ Setup JDK"
uses: actions/setup-java@v4
with:
distribution: liberica
java-version: ${{ matrix.java }}
- name: "🐘 Setup Gradle"
uses: gradle/actions/setup-gradle@4d9f0ba0025fe599b4ebab900eb7f3a1d93ef4c2 # v5.0.0
with:
develocity-access-key: ${{ secrets.DEVELOCITY_ACCESS_KEY }}
- name: "🏃 Run Functional Tests"
env:
GITHUB_MAVEN_PASSWORD: ${{ secrets.GITHUB_TOKEN }}
run: >
./gradlew bootJar check
--continue
--rerun-tasks
--stacktrace
-PgrailsIndy=${{ matrix.indy }}
-PonlyHibernate7Tests
-PskipCodeStyle
publishGradle:
if: github.repository_owner == 'apache' && (github.event_name == 'push' || github.event_name == 'workflow_dispatch')
needs: [ buildGradle ]
Expand Down
2 changes: 2 additions & 0 deletions DEVELOPMENT.md
Original file line number Diff line number Diff line change
Expand Up @@ -35,12 +35,14 @@ These can be set on the command line like so:
* `onlyCoreTests` - runs tests that do not include mongo, hibernate, or functional
* `onlyFunctionalTests` - runs only grails-test-examples/* tests
* `onlyHibernate5Tests` - runs only a hibernate5 related test
* `onlyHibernate7Tests` - runs only a hibernate7 related test
* `onlyMongodbTests` - runs only a mongodb related test
* `serializeMongoTests` - if true, only integration tests from one mongo project will run at a time
* `skipCodeStyle` - does not run code style checks
* `skipCoreTests` - does not run the "core" tests
* `skipFunctionalTests` - does not run the functional tests
* `skipHibernate5Tests` - does not run hibernate5 related tests
* `skipHibernate7Tests` - does not run hibernate7 related tests
* `skipMongodbTests` - does not run mongo related tests
* `skipTests` - no tests will run

Expand Down
1 change: 1 addition & 0 deletions build-logic/docs-core/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,7 @@ tasks.withType(Test).configureEach {
![
'onlyFunctionalTests',
'onlyHibernate5Tests',
'onlyHibernate7Tests',
'onlyMongodbTests',
'skipCoreTests',
'skipTests'
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -122,6 +122,26 @@ class SbomPlugin implements Plugin<Project> {
'grails-data-hibernate5-dbmigration': [
'pkg:maven/javax.xml.bind/jaxb-api@2.3.1?type=jar': 'CDDL-1.1', // api export
],
// hibernate7 staging: same LGPL exemptions as hibernate5 since the staging branch uses hibernate5 artifacts
'grails-data-hibernate7-core' : [
'pkg:maven/org.hibernate.common/hibernate-commons-annotations@5.1.2.Final?type=jar': 'LGPL-2.1-only', // hibernate 5 is LGPL, we are migrating to ASF license in hibernate 7
'pkg:maven/org.hibernate/hibernate-core-jakarta@5.6.15.Final?type=jar' : 'LGPL-2.1-only', // hibernate 5 is LGPL, we are migrating to ASF license in hibernate 7
],
'grails-data-hibernate7' : [
'pkg:maven/org.hibernate.common/hibernate-commons-annotations@5.1.2.Final?type=jar': 'LGPL-2.1-only', // hibernate 5 is LGPL, we are migrating to ASF license in hibernate 7
'pkg:maven/org.hibernate/hibernate-core-jakarta@5.6.15.Final?type=jar' : 'LGPL-2.1-only', // hibernate 5 is LGPL, we are migrating to ASF license in hibernate 7
],
'grails-data-hibernate7-spring-boot': [
'pkg:maven/org.hibernate.common/hibernate-commons-annotations@5.1.2.Final?type=jar': 'LGPL-2.1-only', // hibernate 5 is LGPL, we are migrating to ASF license in hibernate 7
'pkg:maven/org.hibernate/hibernate-core-jakarta@5.6.15.Final?type=jar' : 'LGPL-2.1-only', // hibernate 5 is LGPL, we are migrating to ASF license in hibernate 7
],
'grails-data-hibernate7-spring-orm' : [
'pkg:maven/org.hibernate.common/hibernate-commons-annotations@5.1.2.Final?type=jar': 'LGPL-2.1-only', // hibernate 5 is LGPL, we are migrating to ASF license in hibernate 7
'pkg:maven/org.hibernate/hibernate-core-jakarta@5.6.15.Final?type=jar' : 'LGPL-2.1-only', // hibernate 5 is LGPL, we are migrating to ASF license in hibernate 7
],
'grails-data-hibernate7-dbmigration': [
'pkg:maven/javax.xml.bind/jaxb-api@2.3.1?type=jar': 'CDDL-1.1', // api export
],
]

@Override
Expand Down
27 changes: 16 additions & 11 deletions gradle/functional-test-config.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,7 @@ List<String> debugArguments = [
]
tasks.withType(Test).configureEach { Test task ->
boolean isHibernate5 = !project.name.startsWith('grails-test-examples-hibernate5')
boolean isHibernate7 = !project.name.startsWith('grails-test-examples-hibernate7')
boolean isMongo = !project.name.startsWith('grails-test-examples-mongodb')
Comment thread
jdaugherty marked this conversation as resolved.
Outdated

// Honor DO_NOT_CACHE_TESTS=1 so developers can repeatedly invoke the same test command
Expand All @@ -68,27 +69,31 @@ tasks.withType(Test).configureEach { Test task ->
task.outputs.upToDateWhen { !doNotCacheTests }

onlyIf {
if (project.hasProperty('skipFunctionalTests')) {
if (['skipFunctionalTests', 'onlyCoreTests', 'skipTests'].any { project.hasProperty(it) }) {
return false
}

if (project.hasProperty('onlyHibernate5Tests')) {
if (isHibernate5) {
return false
}
if (!isHibernate5 && project.hasProperty('onlyHibernate5Tests')) {
return false
}

if (project.hasProperty('onlyMongodbTests')) {
if (isMongo) {
return false
}
if (!isHibernate7 && project.hasProperty('onlyHibernate7Tests')) {
return false
}

if (!isMongo && project.hasProperty('onlyMongodbTests')) {
return false
}

if (isHibernate5 && project.hasProperty('skipHibernate5Tests')) {
return false
}

if (project.hasProperty('onlyCoreTests')) {
if (isHibernate7 && project.hasProperty('skipHibernate7Tests')) {
return false
}

if(project.hasProperty('skipTests')) {
if (isMongo && project.hasProperty('skipMongodbTests')) {
return false
}

Expand Down
8 changes: 8 additions & 0 deletions gradle/grails-data-tck-config.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,14 @@ tasks.withType(Test).configureEach { Test it ->
return false
}

if (project.hasProperty('skipHibernate7Tests') && project.name.startsWith('grails-data-hibernate7')) {
return false
}

if (project.hasProperty('onlyHibernate7Tests') && !project.name.startsWith('grails-data-hibernate7')) {
return false
}

if (project.hasProperty('skipHibernate5Tests') && project.name.startsWith('grails-data-hibernate5')) {
return false
}
Expand Down
1 change: 1 addition & 0 deletions gradle/hibernate5-test-config.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ tasks.withType(Test).configureEach {
onlyIf {
![
'onlyFunctionalTests',
'onlyHibernate7Tests',
'skipHibernate5Tests',
'onlyMongodbTests',
'onlyCoreTests',
Expand Down
75 changes: 75 additions & 0 deletions gradle/hibernate7-test-config.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you 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
*
* https://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.
*/

dependencies {
// https://docs.gradle.org/8.3/userguide/upgrading_version_8.html#test_framework_implementation_dependencies
add('testRuntimeOnly', 'org.junit.platform:junit-platform-launcher')
}

tasks.withType(Test).configureEach {
// Honor DO_NOT_CACHE_TESTS=1 so developers can repeatedly invoke the same test command
// without --rerun-tasks (and without recompiling everything else).
outputs.cacheIf { !doNotCacheTests }
outputs.upToDateWhen { !doNotCacheTests }

onlyIf {
![
'onlyFunctionalTests',
'onlyHibernate5Tests',
'skipHibernate7Tests',
'onlyMongodbTests',
'onlyCoreTests',
'skipTests'
].find {
project.hasProperty(it)
}
}

useJUnitPlatform()
systemProperty('hibernate7.gorm.suite', System.getProperty('hibernate7.gorm.suite') ?: true)
reports.html.required = !isCiBuild
reports.junitXml.required = !isCiBuild
testLogging {
events('passed', 'skipped', 'failed')
showExceptions = true
exceptionFormat = 'full'
showCauses = true
showStackTraces = true

// set options for log level DEBUG and INFO
debug {
events('started', 'passed', 'skipped', 'failed', 'standardOut', 'standardError')
exceptionFormat = 'full'
}
info.events = debug.events
info.exceptionFormat = debug.exceptionFormat
}
afterTest { desc, result ->
logger.quiet(' -- Executed test {} [{}] with result: {}', desc.name, desc.className, result.resultType)
}
afterSuite { desc, result ->
if (!desc.parent) { // will match the outermost suite
def output = "Results: ${result.resultType} (${result.testCount} tests, ${result.successfulTestCount} successes, ${result.failedTestCount} failures, ${result.skippedTestCount} skipped)"
def startItem = '| ', endItem = ' |'
def repeatLength = startItem.length() + output.length() + endItem.length()
def dashes = '-' * repeatLength
logger.quiet('\n{}\n{}{}{}\n{}', dashes, startItem, output, endItem, dashes)
}
}
}
1 change: 1 addition & 0 deletions gradle/mongodb-forked-test-config.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ tasks.withType(Test).configureEach {
![
'onlyFunctionalTests',
'onlyHibernate5Tests',
'onlyHibernate7Tests',
'skipMongodbTests',
'onlyCoreTests',
'skipTests'
Expand Down
1 change: 1 addition & 0 deletions gradle/mongodb-test-config.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ tasks.withType(Test).configureEach {
![
'onlyFunctionalTests',
'onlyHibernate5Tests',
'onlyHibernate7Tests',
'skipMongodbTests',
'onlyCoreTests',
'skipTests'
Expand Down
7 changes: 7 additions & 0 deletions gradle/publish-root-config.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ def publishedProjects = [
'grails-base-bom',
'grails-bom',
'grails-hibernate5-bom',
'grails-hibernate7-bom',
'grails-micronaut-bom',
'grails-bootstrap',
'grails-cache',
Expand Down Expand Up @@ -121,6 +122,12 @@ def publishedProjects = [
'grails-data-hibernate5-dbmigration',
'grails-data-hibernate5-spring-boot',
'grails-data-hibernate5-spring-orm',
// hibernate7
'grails-data-hibernate7',
'grails-data-hibernate7-core',
'grails-data-hibernate7-dbmigration',
'grails-data-hibernate7-spring-boot',
'grails-data-hibernate7-spring-orm',
// mongodb
'grails-data-mongodb',
'grails-data-mongodb-bson',
Expand Down
1 change: 1 addition & 0 deletions gradle/test-config.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,7 @@ tasks.withType(Test).configureEach {
![
'onlyFunctionalTests',
'onlyHibernate5Tests',
'onlyHibernate7Tests',
'onlyMongodbTests',
'skipCoreTests',
'skipTests'
Expand Down
Loading
Loading