Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
1059 commits
Select commit Hold shift + click to select a range
c227011
dbmigration: added specs for Generators
borinquenkid Mar 11, 2026
ab0c61a
dbmigration: added specs for Generators
borinquenkid Mar 11, 2026
0ca04a0
hibernate 7: refactor ClassBinder
borinquenkid Mar 12, 2026
d6c3684
hibernate 7: CacheConfig usage and include are now enums
borinquenkid Mar 12, 2026
9984a6b
hibernate 7: GrailsHibernatePersistentEntity.java: Added a default g…
borinquenkid Mar 12, 2026
dbe04cb
hibernate 7: Ensuring robust identifier handling through the
borinquenkid Mar 12, 2026
61a4f25
hibernate 7: Consolidated Identity logic
borinquenkid Mar 12, 2026
94dc6e0
hibernate 7: reducing arguments to HibernatePersistentEntity
borinquenkid Mar 12, 2026
b55d18f
hibernate 7: reducing arguments to HibernatePersistentEntity
borinquenkid Mar 12, 2026
0cf3281
hibernate 7: refactoring RootBinder
borinquenkid Mar 13, 2026
70775c2
hibernate 7: using more HibernatePersistentEntity
borinquenkid Mar 13, 2026
eea8d27
hibernate 7: clean up ClassPropertiesBinder.bindClassProperties
borinquenkid Mar 14, 2026
4db2987
hibernate 7: first step in encapsulating Table inside of HibernatePe…
borinquenkid Mar 14, 2026
1062c8f
hibernate 7: Refactoring signature of GrailsPropertyBinder
borinquenkid Mar 14, 2026
4e20853
hibernate 7: Refactoring signature of OneToOneBinder
borinquenkid Mar 14, 2026
80dc543
hibernate 7: Refactoring signature of EnumTypeBinder
borinquenkid Mar 14, 2026
5e4e1c1
hibernate 7: Refactoring CollectionBinder
borinquenkid Mar 15, 2026
12c237d
hibernate 7: Refactoring ForeignKeyOneToOneBinder
borinquenkid Mar 15, 2026
12bcc66
hibernate 7: remove unnecessary collection arguments
borinquenkid Mar 15, 2026
cdf0b68
hibernate 7 refactoring EnumTypeBinder
borinquenkid Mar 15, 2026
d412af8
hibernate 7 temp
borinquenkid Mar 16, 2026
5c9ecac
hibernate 7 temp
borinquenkid Mar 16, 2026
6e0abf6
minor fixes
borinquenkid Mar 17, 2026
20ff4c7
PredicateGenerator throws correct exception
borinquenkid Mar 17, 2026
1c7b105
better fixes for PredicateGenerator
borinquenkid Mar 17, 2026
0a9cc2a
hibernate 7: refactor ManyToOneBinder
borinquenkid Mar 17, 2026
ae5d320
hibernate 7: refactor ManyToOneBinder
borinquenkid Mar 17, 2026
1318b8d
hibernate 7: refactor ComponentBinder
borinquenkid Mar 17, 2026
d1eee79
hibernate 7: refactor EnumTypeBinder
borinquenkid Mar 17, 2026
a172b56
hibernate 7: update BindCollectionElementBinderSpec
borinquenkid Mar 18, 2026
64052ca
hibernate 7: refactor BindCollectionElementBinder
borinquenkid Mar 18, 2026
9003465
hibernate 7: refactor BindCollectionElementBinder to EnumTypeBinder
borinquenkid Mar 18, 2026
840fd60
hibernate 7:
borinquenkid Mar 19, 2026
bf1d4df
hibernate 7:
borinquenkid Mar 19, 2026
889458c
hibernate 7:
borinquenkid Mar 19, 2026
04a9041
hibernate 7:
borinquenkid Mar 20, 2026
2c5ea3c
hibernate 7:
borinquenkid Mar 20, 2026
2b65553
hibernate 7:
borinquenkid Mar 20, 2026
da7b79d
hibernate 7:
borinquenkid Mar 20, 2026
25698ec
hibernate 7:
borinquenkid Mar 20, 2026
e1de371
hibernate 7:
borinquenkid Mar 20, 2026
506d69d
hibernate 7:
borinquenkid Mar 20, 2026
921c97c
hibernate 7:
borinquenkid Mar 20, 2026
4a8fdd9
hibernate 7:
borinquenkid Mar 20, 2026
1fb626b
hibernate 7:
borinquenkid Mar 21, 2026
5cd0b68
hibernate 7:
borinquenkid Mar 21, 2026
61db8e6
hibernate 7:
borinquenkid Mar 21, 2026
230bb94
hibernate 7:
borinquenkid Mar 22, 2026
6371219
hibernate 7:
borinquenkid Mar 22, 2026
4fd80ac
hibernate 7: linting
borinquenkid Mar 22, 2026
832ddb8
hibernate 7: linting
borinquenkid Mar 22, 2026
402690e
hibernate 7: linting and EventListenerIntegrator tightening
borinquenkid Mar 22, 2026
ad038d9
hibernate 7: Internally DataSource Connection.DEFAULT value was incor…
borinquenkid Mar 22, 2026
ec22a38
hibernate 7: added more validations for GrailsHibernateUtil
borinquenkid Mar 22, 2026
2baf5fa
hibernate 7: more linting
borinquenkid Mar 22, 2026
fe558c7
hibernate 7:
borinquenkid Mar 22, 2026
4bd0764
hibernate 7:
borinquenkid Mar 23, 2026
515ec3c
hibernate 7:
borinquenkid Mar 23, 2026
b760584
hibernate 7:
borinquenkid Mar 23, 2026
a0c5838
hibernate 7:
borinquenkid Mar 23, 2026
af9c94c
hibernate 7:
borinquenkid Mar 24, 2026
3209616
hibernate 7:
borinquenkid Mar 24, 2026
b940162
hibernate 7:
borinquenkid Mar 24, 2026
3d0c862
hibernate 7:
borinquenkid Mar 24, 2026
c7ab80c
mongo: split H7 specs from the rest
borinquenkid Mar 25, 2026
bacd5fa
mongo: fix MongoContainers for latest version of Docker
borinquenkid Mar 25, 2026
6eef167
mongo: starts MongoDatastoreSpec
borinquenkid Mar 25, 2026
d6414a1
mongo: fix tests
borinquenkid Mar 25, 2026
17160e2
hibernate: fix PagedResultList
borinquenkid Mar 25, 2026
8d5789f
hibernate: Pending checks
borinquenkid Mar 25, 2026
2d7682f
hibernate: RAT
borinquenkid Mar 25, 2026
0975eff
hibernate: PMD
borinquenkid Mar 25, 2026
29559c0
hibernate: OptimisticLockingSpec
borinquenkid Mar 25, 2026
ae21bb2
hibernate: linting
borinquenkid Mar 26, 2026
1e2e7f7
hibernate: fixed broken tests
borinquenkid Mar 26, 2026
c9ae2ec
hibernate: linting
borinquenkid Mar 26, 2026
0609920
hibernate: linting
borinquenkid Mar 26, 2026
948bab9
gorm: separating core GORM tests from implementations. Some tests mar…
borinquenkid Mar 27, 2026
0ef4d19
1) Stabilized Multi-DataSource Support
borinquenkid Mar 28, 2026
2b7199d
spring 4.0 integration hit hibernate 7 branch
borinquenkid Mar 29, 2026
18eaf6b
Finalize Hibernate 7 multi-datasource support and Spring Boot 4 modul…
borinquenkid Mar 29, 2026
63b3e7a
Updated GrailsCodeStylePlugin to aggregate all linting violations int…
borinquenkid Mar 29, 2026
6aa1d89
The GrailsCodeStylePlugin now supports consolidated style violation r…
borinquenkid Mar 29, 2026
216cef3
hibernate 7: linting
borinquenkid Mar 29, 2026
cd2c8d1
hibernate 7: linting and expanding tests
borinquenkid Mar 29, 2026
5d11c06
chore: fix CodeNarc violations in grails-datamapping-tck and improve …
borinquenkid Mar 30, 2026
4aea0cb
chore: fix final CodeNarc indentation violation in grails-datamapping…
borinquenkid Mar 30, 2026
980cbe9
chore: fix Apache Rat audit failures
borinquenkid Mar 30, 2026
b8b16f8
fix: various build and test failures in Hibernate 7 and GSP modules
borinquenkid Mar 30, 2026
8d9b371
datamapping-core complilation
borinquenkid Mar 30, 2026
240b972
codenarc
borinquenkid Mar 30, 2026
f3e0f35
Merge branch '8.0.x' into 8.0.x-hibernate7
jdaugherty Mar 30, 2026
ac62344
linting
borinquenkid Mar 31, 2026
e36e38a
Merge remote-tracking branch 'jamesfredley/spring-boot-4' into 8.0.x-…
borinquenkid Mar 31, 2026
713487d
testing violations plugins
borinquenkid Apr 1, 2026
a004b00
chore: fix grails-data-hibernate7-dbmigration tests and compatibility
borinquenkid Apr 1, 2026
64310a7
chore: fix SpotBugs violations in grails-data-hibernate7-dbmigration
borinquenkid Apr 1, 2026
e8ee4ba
hibernate7 codeNarc fixes
borinquenkid Apr 1, 2026
e649743
refactor: change SimpleValueBinder constructor visibility to private
borinquenkid Apr 1, 2026
6929305
refactor: BasicValueIdCreator and SimpleValueBinder refactoring
borinquenkid Apr 1, 2026
1a7eb80
refactor: encapsulate identifier resolution in BasicValueIdCreator
borinquenkid Apr 1, 2026
e90fb81
Merge branch 'spring-boot-4' into 8.0.x-hibernate7
jamesfredley Apr 1, 2026
c6bb085
fix: DynamicFinder boolean+OR query junction logic
jamesfredley Apr 2, 2026
0d8f43d
fix: @DelegateAsync AST transform classloader regression
jamesfredley Apr 2, 2026
20131c0
fix: restore non-hibernate7 test coverage
jamesfredley Apr 2, 2026
cb25275
Merge branch 'fix/restore-non-hibernate7-test-coverage' into 8.0.x-hi…
jamesfredley Apr 2, 2026
2cf2ad1
refactor: rename BasicValueIdCreator to BasicValueCreator and consoli…
borinquenkid Apr 1, 2026
c8944ed
style: fix CodeNarc violations in TCK specs
jamesfredley Apr 2, 2026
ecf8caf
refactor: rename of HibernateProperty hierarchy
borinquenkid Apr 2, 2026
6fd8c13
Merge remote-tracking branch 'origin/8.0.x-hibernate7' into 8.0.x-hib…
borinquenkid Apr 2, 2026
33f1a2f
test: expand HibernateProxyHandler7Spec to match hibernate5 test cove…
jamesfredley Apr 2, 2026
e0e272c
fix: add Groovy proxy support to HibernateProxyHandler.isInitialized()
jamesfredley Apr 2, 2026
1a66edc
Merge branch '8.0.x-hibernate7' into 8.0.x-hibernate7-dev
borinquenkid Apr 2, 2026
148d718
refactor: address Copilot review feedback on PR #15548
jamesfredley Apr 2, 2026
8a035be
fix: normalize Groovy GString to String in Hibernate 7 criteria queries
jamesfredley Apr 2, 2026
6641b98
Merge pull request #15549 from apache/fix/h7-multi-datasource-execute…
jamesfredley Apr 2, 2026
2687842
refactor: replace DSL identity config with typed identity properties …
borinquenkid Apr 2, 2026
101d0bc
Merge branch '8.0.x-hibernate7' into 8.0.x-hibernate7-dev
borinquenkid Apr 2, 2026
fbced2d
refactor: move generator name resolution into HibernatePersistentProp…
borinquenkid Apr 2, 2026
14dd3f8
test: add getGeneratorName() coverage to HibernatePersistentPropertySpec
borinquenkid Apr 2, 2026
67fb91e
refactor: throw MappingException in getIdentityProperty() instead of …
borinquenkid Apr 2, 2026
a7830a6
refactor: simplify binder signatures; fix composite identity parts type
borinquenkid Apr 3, 2026
e0b59e1
refactor: remove RootClass param from IdentityBinder.bindIdentity
borinquenkid Apr 3, 2026
8bdc7e3
fix: H7 merge upserts correctly and mutates caller instance
borinquenkid Apr 3, 2026
93c5928
test: DetachedCriteria list returns PagedResultList only when max is set
borinquenkid Apr 3, 2026
6382464
fix: remove double populateArgumentsForCriteria call in DetachedCrite…
borinquenkid Apr 3, 2026
9598b9d
Merge remote-tracking branch 'origin/spring-boot-4' into 8.0.x-hibern…
jamesfredley Apr 3, 2026
945c907
fix: PagedResultList totalCount leaks ORDER BY into COUNT query on H2
borinquenkid Apr 3, 2026
8c2ae2e
test: restore multi-row validation for findAll* boolean property finders
borinquenkid Apr 3, 2026
eaacee2
H7: incorrect messages
borinquenkid Apr 3, 2026
78b8b36
Merge branch '8.0.x-hibernate7' into 8.0.x-hibernate7-dev
borinquenkid Apr 3, 2026
1497ea4
H7: fix style violations and update agent guidelines
borinquenkid Apr 3, 2026
9d723a8
H7: update agent guidelines for test aggregation
borinquenkid Apr 3, 2026
d52a9e5
H7: make test aggregation more robust by scanning all root directories
borinquenkid Apr 3, 2026
6658a08
fix: DefaultUrlCreator generates correct URL for controller-only links
borinquenkid Apr 3, 2026
9c79935
fix: remove @PendingFeatureIf from many-to-many sorting test in H5
borinquenkid Apr 3, 2026
19f30df
H7: remove unused resolveIdentifierProperty method and update tests
borinquenkid Apr 3, 2026
f71182d
H7: finalize agent guidelines and fix style violations
borinquenkid Apr 3, 2026
3975f3a
fix: VersionBinder type default and VersionBinderSpec integration tests
borinquenkid Apr 3, 2026
1acfea2
Add HibernateVersionProperty for version slot in entity model
borinquenkid Apr 3, 2026
23d9233
Fix VersionBinder type regression: let bindSimpleValue resolve type
borinquenkid Apr 3, 2026
06e4d20
groovy linting
borinquenkid Apr 3, 2026
10cdfc2
H7 simplify signature of EnumTypeBinder bindEnumType
borinquenkid Apr 3, 2026
6cc9fda
Merge pull request #15548 from apache/fix/groovy-proxy-isinitialized
jamesfredley Apr 3, 2026
d0e34b2
H7 clean up arguments of SimpleValueBinder
borinquenkid Apr 3, 2026
a171d14
H7: enforce test coverage and verify collection binding ownership model
borinquenkid Apr 4, 2026
f9841b3
H7: refactor collection binding with HibernateCollectionProperty and …
borinquenkid Apr 4, 2026
e2d9374
Merge pull request #15550 from apache/8.0.x-hibernate7-dev
jdaugherty Apr 4, 2026
df1f06c
H7: fix composite identity and collection binding issues, and update …
borinquenkid Apr 4, 2026
be24bd5
Merge branch '8.0.x-hibernate7' into 8.0.x-hibernate7-dev
borinquenkid Apr 4, 2026
956ee4e
H7 added a scenario for CollectionSecondPassBinder
borinquenkid Apr 4, 2026
f6e9177
H7 Features & Refactoring
borinquenkid Apr 4, 2026
b7f518e
H7: renames and removing unused arguments in collection second pass b…
borinquenkid Apr 5, 2026
ad10d58
H7: expand test coverage for ManyToMany properties and List second pa…
borinquenkid Apr 5, 2026
a8d5db2
H7: rewrite ListSecondPassBinder using fluent and modular method stru…
borinquenkid Apr 5, 2026
6c7709c
H7: rewrite CollectionBinder using fluent and modular method structure
borinquenkid Apr 5, 2026
ed3a305
H7: refactor table resolution logic into TableForManyCalculator
borinquenkid Apr 5, 2026
00e5bb8
H7: encapsulate collection configuration within HibernateToManyProperty
borinquenkid Apr 6, 2026
075b59e
H7: finalize encapsulation fixes and expand property specifications
borinquenkid Apr 6, 2026
f8eae48
H7: move validateOwningSide logic to HibernateToManyProperty implemen…
borinquenkid Apr 6, 2026
f4ead27
H7: refactor MapSecondPassBinder
borinquenkid Apr 6, 2026
eaf4cc1
H7: update HibernateGormAutoConfigurationSpec
borinquenkid Apr 6, 2026
dc7237e
Register HibernateGormAutoConfiguration and GormCompilerAutoConfigura…
borinquenkid Apr 6, 2026
ec320d6
Update README: clarify JVM integration strategy for GORM Hibernate
borinquenkid Apr 6, 2026
228a834
Increase coverage for low-coverage H7 classes
borinquenkid Apr 6, 2026
5e38fda
Refactor anonymous HibernateGormEnhancer to SchemaTenantGormEnhancer …
borinquenkid Apr 7, 2026
98482ed
Fix unchecked cast warnings in withSession/withNewSession(String, Clo…
borinquenkid Apr 7, 2026
d8e01ce
Test and fix unused public methods in HibernateDatastore
borinquenkid Apr 7, 2026
13566eb
H7: aggregate Jacoco Coverage
borinquenkid Apr 7, 2026
0eea605
test(hibernate7): increase HibernateMappingContextConfiguration cover…
borinquenkid Apr 7, 2026
0ee471a
test(hibernate7): increase HibernateSimpleIdentity coverage to 100%
borinquenkid Apr 7, 2026
3f20f01
test(hibernate7): increase MutationQueryDelegate coverage to 90%+
borinquenkid Apr 7, 2026
d0190db
test: add specs for HibernateEventListeners and HibernateSimpleIdenti…
borinquenkid Apr 7, 2026
030c74c
test: add specs for HqlQueryDelegate and CacheConfig (cov-07, cov-10)
borinquenkid Apr 7, 2026
aecede0
test: add JoinTable/MappingCacheHolder/DiscriminatorConfig/CompositeI…
borinquenkid Apr 7, 2026
3ce6685
test: add SelectQueryDelegate and HibernateEmbeddedPersistentEntity s…
borinquenkid Apr 7, 2026
7a62408
test: add SoftKeySpec and expand GrailsHibernateUtilSpec coverage
borinquenkid Apr 7, 2026
ae69bcc
test: expand EventListenerIntegratorSpec and add HibernateConnectionS…
borinquenkid Apr 7, 2026
25395c9
test: expand MappingSpec and add HibernateMappingKeywordSpec for cove…
borinquenkid Apr 7, 2026
9e79cd5
test: extend HibernateBasicProperty, MultiTenantEventListener, and Cl…
borinquenkid Apr 7, 2026
83bf9ed
test: extend IdentityEnumType, CollectionType, and add HibernateIdent…
borinquenkid Apr 7, 2026
538e5ca
feat(h7): embedded collection binding infrastructure + coverage impro…
borinquenkid Apr 7, 2026
99d3ac7
test(h7): expand IncrementGeneratorSpec to cover protected method bra…
borinquenkid Apr 7, 2026
166b54b
test(h7): expand coverage for ClassBinder, SingleTableSubclassBinder,…
borinquenkid Apr 7, 2026
cc9a4e2
test(h7): expand PredicateGenerator and GrailsNativeGenerator coverage
borinquenkid Apr 7, 2026
ecec29a
test(h7): expand HibernateEventListener coverage with 8 new event typ…
borinquenkid Apr 7, 2026
19afcf4
test(h7): expand coverage for HibernatePersistentProperty and TraitPr…
borinquenkid Apr 7, 2026
24d5e1c
test(h7): add GrailsBytecodeProvider spec and expand proxy factory co…
borinquenkid Apr 7, 2026
0ffa00b
test(h7): expand PropertyDefinitionDelegate and SimpleIdBinder coverage
borinquenkid Apr 7, 2026
561beb9
test(h7): expand HibernateToManyProperty and NamespaceNameExtractor c…
borinquenkid Apr 7, 2026
5e57ce3
chore: mark GrailsTableGenerator, ColumnBinder, ManyToOneBinder, Tabl…
borinquenkid Apr 7, 2026
5e73a97
test(h7): expand ByteBuddyGroovyProxyFactory coverage and mark stale …
borinquenkid Apr 7, 2026
737d308
test(h7): expand DefaultColumnNameFetcher coverage and mark Hibernate…
borinquenkid Apr 7, 2026
f3b332f
chore: mark all 90%+ JaCoCo violations as covered (stale reports)
borinquenkid Apr 7, 2026
ed8e95a
chore: mark GrailsSessionContext as covered (stale JaCoCo report)
borinquenkid Apr 7, 2026
c541328
test(h7): expand GrailsSessionContextSpec coverage
borinquenkid Apr 7, 2026
d23f7af
test(h7): extract protected JTA methods in GrailsSessionContext for t…
borinquenkid Apr 7, 2026
24267ca
fix(h7): correct retrieveAll(Iterable) criteria IN predicate and add …
borinquenkid Apr 7, 2026
b494c8f
test(h7): extract closeConnectionSources/closeGormEnhancer hooks and …
borinquenkid Apr 7, 2026
473d398
test(h7): expand HibernateConnectionSourceFactory coverage to 18 tests
borinquenkid Apr 7, 2026
3dd58d5
test(h7): expand HibernateCriteriaBuilder coverage across both specs …
borinquenkid Apr 7, 2026
b03041e
test(h7): create ByteBuddyGroovyInterceptorSpec for direct proxy inte…
borinquenkid Apr 7, 2026
ad4dd39
feat(h7): extract TransactionResources abstraction and expand GrailsH…
borinquenkid Apr 7, 2026
e3bb5a4
test(h7): expand HibernateGormInstanceApi coverage to 23 tests
borinquenkid Apr 7, 2026
56b06bf
test(h7): expand ChildHibernateDatastore coverage with missing getDat…
borinquenkid Apr 7, 2026
103c88b
test(h7): expand HibernateGormStaticApi coverage to 61 tests
borinquenkid Apr 7, 2026
7c7ce43
test(h7): expand ClosureEventTriggeringInterceptor coverage to 19 tests
borinquenkid Apr 7, 2026
5a5c252
chore: stop tracking JACOCO_COVERAGE_VIOLATIONS.md
borinquenkid Apr 7, 2026
8ef1c34
test(h7): expand GrailsHibernateUtil, SchemaTenantGormEnhancer and Ma…
borinquenkid Apr 7, 2026
a463efa
test(h7): expand HibernateConnectionSourceFactory coverage to 25 tests
borinquenkid Apr 7, 2026
02aeb2d
test(h7): expand HibernateToManyCollectionProperty, SingleTableSubcla…
borinquenkid Apr 7, 2026
217e1e3
test(h7): expand HibernateProxyHandler coverage to 28 tests
borinquenkid Apr 7, 2026
1b8bcad
test(h7): expand HibernateEventListener coverage to 17 tests
borinquenkid Apr 7, 2026
451572f
test(h7): expand PredicateGenerator coverage to 30 tests
borinquenkid Apr 7, 2026
ca6cb65
test(h7): expand IndexBinder coverage to 100% (7 tests)
borinquenkid Apr 7, 2026
22fcdcf
test(h7): expand HibernateMappingFactory coverage to 29 tests
borinquenkid Apr 7, 2026
0f9b6a0
test(h7): expand HibernateMappingContext, SortConfig and PersistentEn…
borinquenkid Apr 8, 2026
a99b300
test(h7): expand VersionBinder, IdentityBinder, SimpleIdBinder, Prima…
borinquenkid Apr 8, 2026
762f0c5
test(h7): expand ClassPropertiesBinder and DefaultDiscriminatorBinder…
borinquenkid Apr 8, 2026
b8da369
test(h7): expand CascadeBehaviorFetcher and GrailsPropertyBinder cove…
borinquenkid Apr 8, 2026
65ba0d2
test(h7): expand ManyToOneBinder coverage to 100%
borinquenkid Apr 8, 2026
353b064
test(h7): expand NamingStrategyProvider and DefaultColumnNameFetcher …
borinquenkid Apr 8, 2026
6864c7d
test(h7): expand TableForManyCalculator coverage to 100%
borinquenkid Apr 8, 2026
6561fc6
test(h7): expand HibernateToManyProperty and HibernatePersistentPrope…
borinquenkid Apr 8, 2026
e11ad2d
test(h7): expand MapSecondPassBinder and HibernateHqlQuery coverage
borinquenkid Apr 8, 2026
f3a7757
test(h7): expand HibernateOneToOneProperty coverage to cover missing …
borinquenkid Apr 8, 2026
ccf8e88
test(h7): expand MutationQueryDelegate and MultiTenantEventListener c…
borinquenkid Apr 8, 2026
0adbba1
test(h7): expand PropertyConfig and HibernateAssociationQuery coverage
borinquenkid Apr 8, 2026
4ceeb1c
test(h7): expand UniqueKeyForColumnsCreator coverage with public cons…
borinquenkid Apr 8, 2026
cde1731
test(h7): expand CollectionSecondPassBinder coverage for componentBin…
borinquenkid Apr 8, 2026
29697cd
fix: make gorm and app1 functional tests H7-compatible
borinquenkid Apr 8, 2026
2955206
fix(h7): fix 3 H7 GORM bugs — NonUniqueResultException, aggregate ret…
borinquenkid Apr 8, 2026
1d3e873
fix(h7): prevent 'two representations of same collection' in addTo/sa…
borinquenkid Apr 9, 2026
0aa7872
fix(test): correct GormCriteriaQueriesSpec to use safe HQL overloads …
borinquenkid Apr 9, 2026
3a1cd7a
Merge branch '8.0.x' into 8.0.x-hibernate7
jdaugherty Apr 9, 2026
76eab15
Merge remote-tracking branch 'upstream/8.0.x-hibernate7' into 8.0.x-h…
jdaugherty Apr 9, 2026
fc9b9de
Fix bad merge
jdaugherty Apr 9, 2026
0684786
Remove old hibernate6 licenses
jdaugherty Apr 9, 2026
e15e02e
Remove old TODO
jdaugherty Apr 9, 2026
e78924f
Remove jandex from sbom & adopt newer coordinates
jdaugherty Apr 9, 2026
6fa604f
Remove variances
jdaugherty Apr 9, 2026
78fccb9
Remove LGPL reference
jdaugherty Apr 9, 2026
208a7e5
H7: CodeStyle
borinquenkid Apr 9, 2026
8b99381
Refactored Vendored Spring ORM Code
borinquenkid Apr 9, 2026
276bf44
Merge branch '8.0.x-hibernate7' into 8.0.x-hibernate7-dev
borinquenkid Apr 9, 2026
753607e
chore: fix code style plugin and resolve code quality violations
borinquenkid Apr 10, 2026
34805d2
chore: resolve several spotbugs and pmd violations
borinquenkid Apr 10, 2026
939e5ea
fix: address Copilot PR review comments
borinquenkid Apr 10, 2026
c800469
Merge remote-tracking branch 'upstream/8.0.x-hibernate7-dev' into 8.0…
jdaugherty Apr 10, 2026
732d30f
Merge remote-tracking branch 'upstream/8.0.x' into 8.0.x-hibernate7
jdaugherty Apr 10, 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
  •  
  •  
  •  
3 changes: 2 additions & 1 deletion .editorconfig
Original file line number Diff line number Diff line change
Expand Up @@ -23,4 +23,5 @@ indent_size = 4
indent_style = space
insert_final_newline = true
spaces_around_operators = true
wildcard_import_limit = 999
wildcard_import_limit = 999
imports_layout = java.**, |, javax.**, |, groovy.**, org.apache.groovy.**, org.codehaus.groovy.**, |, jakarta.**, |, *, |, io.spring.**, org.springframework.**, |, grails.**, org.apache.grails.**, org.grails.**, |, $*
2 changes: 2 additions & 0 deletions .git-blame-ignore-revs
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# .git-blame-ignore-revs
# Reformat code: https://github.com/apache/grails-core/pull/14925
20c3278683f2993e23c947c409eafa978c0aefb7
# Reformat code for hibernate 7
811bacd377678e22bac6308065da28b1caa17700
2 changes: 2 additions & 0 deletions .github/workflows/codeql.yml
Original file line number Diff line number Diff line change
Expand Up @@ -30,10 +30,12 @@ on:
push:
branches:
- '[4-9]+.[0-9]+.x'
- '8.0.x-hibernate7.*'
pull_request:
# The branches below must be a subset of the branches above
branches:
- '[4-9]+.[0-9]+.x'
- '8.0.x-hibernate7.*'
# queue jobs and only allow 1 run per branch due to the likelihood of hitting GitHub resource limits
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
Expand Down
16 changes: 13 additions & 3 deletions .github/workflows/codestyle.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ on:
push:
branches:
- '[0-9]+.[0-9]+.x'
- '8.0.x-hibernate7.*'
pull_request:
workflow_dispatch:
# queue jobs and only allow 1 run per branch due to the likelihood of hitting GitHub resource limits
Expand All @@ -43,18 +44,27 @@ jobs:
with:
develocity-access-key: ${{ secrets.GRAILS_DEVELOCITY_ACCESS_KEY }}
- name: "🔎 Check Core Projects"
run: ./gradlew codeStyle
run: |
mkdir -p build/reports/codestyle
./gradlew codeStyle --continue 2>&1 | tee build/codestyle-output.log || true
# Extract Spotless violations into a separate report
sed -n '/The following files had format violations:/,/Run.*spotlessApply.*to fix all violations\./p' build/codestyle-output.log > build/reports/codestyle/spotless-violations.txt || true
# Fail the step if the Gradle build actually failed
grep -q "BUILD SUCCESSFUL" build/codestyle-output.log
- name: "📤 Upload Failure Reports"
if: always()
uses: actions/upload-artifact@v7.0.0
with:
name: core-reports
path: build/reports/codestyle/
path: |
build/reports/codestyle/
**/build/reports/pmd/
**/build/reports/spotbugs/
- name: "📋 Publish Code Style Report in Job Summary"
if: always()
run: |
echo "## 🔎 Code Style Report - Core Projects" >> $GITHUB_STEP_SUMMARY
for file in build/reports/codestyle/checkstyle/*.xml build/reports/codestyle/codenarc/*.xml; do
for file in build/reports/codestyle/spotless-violations.txt build/reports/codestyle/checkstyle/*.xml build/reports/codestyle/codenarc/*.xml; do
[ -f "$file" ] || continue
if grep -q "<error " "$file" || grep -q "<Violation " "$file"; then
echo "### ❌ $(basename $file .xml)" >> $GITHUB_STEP_SUMMARY
Expand Down
1 change: 1 addition & 0 deletions .github/workflows/gradle.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ on:
push:
branches:
- '[0-9]+.[0-9]+.x'
- '8.0.x-hibernate7.*'
pull_request:
workflow_dispatch:
# Queue jobs - cancel in-progress PR runs when new commits pushed, but allow branch builds to complete
Expand Down
6 changes: 4 additions & 2 deletions .github/workflows/groovy-joint-workflow.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,10 +17,12 @@ name: "CI - Groovy Joint Validation Build"
on:
push:
branches:
- '[4-9]+.[0-9]+.x'
- '[0-9]+.[0-9]+.x'
- '8.0.x-hibernate7.*'
pull_request:
branches:
- '[4-9]+.[0-9]+.x'
- '[0-9]+.[0-9]+.x'
- '8.0.x-hibernate7.*'
workflow_dispatch:
# queue jobs and only allow 1 run per branch due to the likelihood of hitting GitHub resource limits
concurrency:
Expand Down
10 changes: 4 additions & 6 deletions .github/workflows/rat.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,14 +17,12 @@ name: "Licensing - RAT Report"
on:
push:
branches:
- '[4-9]+.[0-9]+.x'
- '[3-9]+.[3-9]+.x'
- license-audit
- '[0-9]+.[0-9]+.x'
- '8.0.x-hibernate7.*'
pull_request:
branches:
- '[4-9]+.[0-9]+.x'
- '[3-9]+.[3-9]+.x'
- license-audit
- '[0-9]+.[0-9]+.x'
- '8.0.x-hibernate7.*'
workflow_dispatch:
# queue jobs and only allow 1 run per branch due to the likelihood of hitting GitHub resource limits
concurrency:
Expand Down
6 changes: 6 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -52,10 +52,16 @@ prodDb.mv.db
testWatchedFile.properties
_alternativeTable.gsp
**/src/en/ref/Versions/Grails BOM.adoc
**/src/en/ref/Versions/Grails BOM Hibernate5.adoc
**/src/en/ref/Versions/Grails BOM Hibernate7.adoc
stacktrace.log
target
tmp/
!grails-fields/src/main/groovy/org/grails/scaffolding/registry/output
!etc/bin
etc/bin/results
.vscode/
STATE_SNAPSHOT.xml
0_build_grails.txt
*_VIOLATIONS.md
/TEST_FAILURES.md
32 changes: 12 additions & 20 deletions .idea/codeStyles/Project.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

9 changes: 7 additions & 2 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,9 @@ export GRADLE_OPTS="-Xms2G -Xmx5G"
8. **No internal APIs in docs** - Only document public APIs; never reference internal or package-private classes and methods in user-facing documentation
9. **Test via public APIs** - Tests must exercise behavior through the same APIs an end user calls; never invoke internal implementations, package-private methods, or bypass the public surface directly
10. **Always review and extend tests** - Review existing unit and functional tests before making changes; every code change must include new or enhanced tests that cover the affected behavior
11. **Every code touch must update all tests for the changed class** - When a class is modified, find and update every test that covers it — unit, integration, and TCK. Do not leave any existing test out of sync with the new code.
12. **Clean violations before commit** - Before every automated commit, run `./gradlew clean aggregateStyleViolations test aggregateTestFailures --continue` from the root and ensure that `CHECKSTYLE_VIOLATIONS.md`, `CODENARC_VIOLATIONS.md`, `PMD_VIOLATIONS.md`, and `TEST_FAILURES.md` report no issues and are removed.
13. **Mandatory test coverage** - Any class touched in a commit MUST be covered with tests that verify all behavior. You must run ALL tests in the affected module(s) and ensure they pass before committing.

## Available Skills

Expand Down Expand Up @@ -229,8 +232,10 @@ class MyService { }
1. **Fork & branch** from the target release branch (e.g., `7.0.x`)
2. **Run tests** before submitting: `./gradlew build --rerun-tasks`
3. **Run code style checks**: `./gradlew codeStyle`
4. **Squash commits** into a single meaningful commit message
5. **Reference issues** in PR description (e.g., "Fixes #1234")
4. **Clean style violations**: Before committing, run `./gradlew clean aggregateStyleViolations` from the root and ensure that `CHECKSTYLE_VIOLATIONS.md`, `CODENARC_VIOLATIONS.md`, and `PMD_VIOLATIONS.md` have no issues.
5. **Verify test coverage**: Ensure any touched class is covered by tests verifying all behavior. You must run ALL tests in the affected module(s) and ensure they pass before submission.
6. **Squash commits** into a single meaningful commit message
6. **Reference issues** in PR description (e.g., "Fixes #1234")

### Review Process

Expand Down
16 changes: 16 additions & 0 deletions CODE_OF_CONDUCT.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,19 @@
<!--
SPDX-License-Identifier: Apache-2.0

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

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.
-->

# Code of Conduct

Apache Grails follows the ASF [Code of
Expand Down
4 changes: 4 additions & 0 deletions NOTICE
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,10 @@ http://www.oracle.com/webfolder/technetwork/jsc/xml/ns/javaee/index.html
This product includes software developed by the OpenSymphony Group (http://www.opensymphony.com/). It uses Sitemesh2,
licensed under the OpenSymphony Software License, Version 1.1. See licenses/LICENSE-opensymphony.txt for the full license terms.

Liquibase Hibernate Integration
This product includes software developed by Liquibase.org (http://www.liquibase.org) and its contributors.
Licensed under Apache License, Version 2.0.

Spring Framework ORM Hibernate 5 Support
This product includes software from the Spring Framework project (https://spring.io/projects/spring-framework),
vendored from Spring Framework 6.2.x. These classes were removed in Spring Framework 7.0.
Expand Down
4 changes: 0 additions & 4 deletions RENAME.md
Original file line number Diff line number Diff line change
Expand Up @@ -66,14 +66,10 @@ Below is a reference of all migrated artifacts - both their old and new name.
| org.grails.plugins | hibernate5 | org.apache.grails | grails-data-hibernate5 | | | grails-data-mapping |
| org.grails.plugins | database-migration | org.apache.grails | grails-data-hibernate5-dbmigration | | | grails-data-mapping |
| org.grails | gorm-hibernate5-spring-boot | org.apache.grails | grails-data-hibernate5-spring-boot | | | grails-data-mapping |
| org.grails.plugins | hibernate6 | org.apache.grails | grails-data-hibernate6 | | | grails-data-hibernate6 |
| org.grails.plugins | database-migration | org.apache.grails | grails-data-hibernate6-dbmigration | | | grails-data-hibernate6 |
| org.grails | gorm-hibernate6-spring-boot | org.apache.grails | grails-data-hibernate6-spring-boot | | | grails-data-hibernate6 |
| org.grails | grails-datastore-gorm-async | org.apache.grails.data | grails-datamapping-async | | | grails-data-mapping |
| org.grails | grails-datastore-gorm | org.apache.grails.data | grails-datamapping-core | | | grails-data-mapping |
| org.grails | grails-datastore-gorm-test | org.apache.grails.data | grails-datamapping-core-test | | | grails-data-mapping |
| org.grails | grails-datastore-gorm-hibernate5 | org.apache.grails.data | grails-data-hibernate5-core | | | grails-data-mapping |
| org.grails | grails-datastore-gorm-hibernate6 | org.apache.grails.data | grails-data-hibernate6-core | | | grails-data-hibernate6 |
| org.grails | grails-datastore-gorm-mongodb | org.apache.grails.data | grails-data-mongodb-core | | | grails-data-mapping |
| org.grails | grails-datastore-gorm-mongodb-ext | org.apache.grails.data | grails-data-mongodb-ext | | | grails-data-mapping |
| org.grails | grails-datastore-gorm-mongodb-bson | org.apache.grails.data | grails-data-mongodb-bson | | | grails-data-mapping |
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ import org.gradle.api.artifacts.DependencyConstraint
import org.gradle.api.artifacts.ExcludeRule
import org.gradle.api.artifacts.ModuleDependency
import org.gradle.api.artifacts.component.ModuleComponentSelector
import org.gradle.api.artifacts.component.ProjectComponentSelector
import org.gradle.api.artifacts.result.DependencyResult
import org.gradle.api.artifacts.result.ResolvedDependencyResult
import org.gradle.api.file.ConfigurableFileCollection
Expand Down Expand Up @@ -188,6 +189,13 @@ abstract class ExtractDependenciesTask extends DefaultTask {
}

ResolvedDependencyResult dep = (ResolvedDependencyResult) result

// Skip project dependencies (e.g. platform(project(':grails-bom'))) since their
// constraints are already captured through the explicit constraints population
if (dep.requested instanceof ProjectComponentSelector) {
continue
}

ModuleComponentSelector moduleComponentSelector = dep.requested as ModuleComponentSelector

// Any non-constraint via api dependency should *always* be a platform dependency, so expand each of those
Expand Down
13 changes: 13 additions & 0 deletions build-logic/plugins/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,15 @@ dependencies {
implementation "${gradleBomDependencies['grails-publish-plugin']}"
implementation "org.gradle.crypto.checksum:org.gradle.crypto.checksum.gradle.plugin:${gradleProperties.gradleChecksumPluginVersion}"
implementation "org.cyclonedx.bom:org.cyclonedx.bom.gradle.plugin:${gradleProperties.gradleCycloneDxPluginVersion}"
implementation "com.diffplug.spotless:spotless-plugin-gradle:${gradleProperties.spotlessVersion}"
implementation "com.github.spotbugs.snom:spotbugs-gradle-plugin:${gradleProperties.spotbugsPluginVersion}"

testImplementation "org.spockframework:spock-core:${gradleBomDependencyVersions['gradle-spock.version']}"
testImplementation gradleTestKit()
}

tasks.named('test') {
useJUnitPlatform()
}

gradlePlugin {
Expand Down Expand Up @@ -78,5 +87,9 @@ gradlePlugin {
id = 'org.apache.grails.buildsrc.dependency-validator'
implementationClass = 'org.apache.grails.buildsrc.GrailsDependencyValidatorPlugin'
}
register('grailsTestAggregation') {
id = 'org.apache.grails.gradle.test-aggregation'
implementationClass = 'org.apache.grails.buildsrc.GrailsTestPlugin'
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,10 @@ class GradleUtils {
def v = findProperty(project, name)
return v == null ? null : Integer.valueOf(v as String) as T
}
if (type && (type == Boolean || type == boolean.class)) {
def v = findProperty(project, name)
return v == null ? null : Boolean.parseBoolean(v as String) as T
}

findProperty(project, name) as T
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,18 +25,31 @@ import groovy.transform.CompileStatic
import org.gradle.api.Project
import org.gradle.api.file.DirectoryProperty
import org.gradle.api.model.ObjectFactory
import org.gradle.api.provider.Property

@CompileStatic
class GrailsCodeStyleExtension {

/**
* Defaults to project.buildDir/checkstyle.
* Defaults to project.rootProject.buildDir/codestyle/checkstyle.
* Default checkstyle files will be written here and used from this location.
*/
final DirectoryProperty checkstyleDirectory

/**
* Defaults to project.buildDir/codenarc.
* Defaults to project.rootProject.buildDir/codestyle/spotless.
* Directory for Spotless configuration files (e.g. greclipse.properties).
*/
final DirectoryProperty spotlessDirectory

/**
* Defaults to project.rootProject.buildDir/codestyle/pmd.
* Directory for PMD configuration files (e.g. pmd.xml).
*/
final DirectoryProperty pmdDirectory

/**
* Defaults to project.rootProject.buildDir/codestyle/codenarc.
* Default codenarc files will be written here and used from this location.
*/
final DirectoryProperty codenarcDirectory
Expand All @@ -50,10 +63,16 @@ class GrailsCodeStyleExtension {
@Inject
GrailsCodeStyleExtension(ObjectFactory objects, Project project) {
checkstyleDirectory = objects.directoryProperty().convention(
project.rootProject.layout.buildDirectory.dir('checkstyle')
project.rootProject.layout.buildDirectory.dir('codestyle/checkstyle')
)
spotlessDirectory = objects.directoryProperty().convention(
project.rootProject.layout.buildDirectory.dir('codestyle/spotless')
)
pmdDirectory = objects.directoryProperty().convention(
project.rootProject.layout.buildDirectory.dir('codestyle/pmd')
)
codenarcDirectory = objects.directoryProperty().convention(
project.rootProject.layout.buildDirectory.dir('codenarc')
project.rootProject.layout.buildDirectory.dir('codestyle/codenarc')
)
reportsDirectory = objects.directoryProperty().convention(
project.rootProject.layout.buildDirectory.dir('reports/codestyle')
Expand Down
Loading
Loading