You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@grails.apache.org by ja...@apache.org on 2026/07/05 05:32:59 UTC

(grails-core) branch cleanup/8.0-h7-todo-doc-cleanup created (now 12aa6e7b85)

This is an automated email from the ASF dual-hosted git repository.

jamesfredley pushed a change to branch cleanup/8.0-h7-todo-doc-cleanup
in repository https://gitbox.apache.org/repos/asf/grails-core.git


      at 12aa6e7b85 Remove stale Hibernate 7 dbmigration TODO

This branch includes the following new commits:

     new 2989956d66 Update agent guides for Grails 8 versions
     new fed290e555 Refresh Micronaut BOM Jackson comments
     new 243a516577 Align Forge picocli with root version pin
     new b8ca6c1e12 Remove stale Hibernate 7 packaging TODOs
     new 4746b6e0c3 Clarify Hibernate 7 core session comments
     new 92ddb78021 Clarify Hibernate 7 domain binding comments
     new 2b8e05411f Remove stale Hibernate 7 utility TODOs
     new a9d3243bf8 Clarify Hibernate 7 query comments
     new fc0e31b3f3 Remove stale Hibernate 7 query spec TODOs
     new 38e037834f Remove stale Hibernate 7 service spec TODOs
     new 12aa6e7b85 Remove stale Hibernate 7 dbmigration TODO

The 11 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.



(grails-core) 08/11: Clarify Hibernate 7 query comments

Posted by ja...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

jamesfredley pushed a commit to branch cleanup/8.0-h7-todo-doc-cleanup
in repository https://gitbox.apache.org/repos/asf/grails-core.git

commit a9d3243bf8d89d19db916c093f21e403cbd41c1a
Author: James Fredley <ja...@users.noreply.github.com>
AuthorDate: Sun Jul 5 00:39:08 2026 -0400

    Clarify Hibernate 7 query comments
    
    Assisted-by: Hephaestus:openai/gpt-5.5
---
 .../groovy/org/grails/orm/hibernate/query/AliasMapEntryFunction.java  | 2 +-
 .../groovy/org/grails/orm/hibernate/query/HqlListQueryBuilder.java    | 1 -
 .../main/groovy/org/grails/orm/hibernate/query/HqlQueryContext.java   | 1 -
 .../main/groovy/org/grails/orm/hibernate/query/JpaQueryContext.java   | 4 ++--
 4 files changed, 3 insertions(+), 5 deletions(-)

diff --git a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/query/AliasMapEntryFunction.java b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/query/AliasMapEntryFunction.java
index 7028999a57..5c54fc580a 100644
--- a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/query/AliasMapEntryFunction.java
+++ b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/query/AliasMapEntryFunction.java
@@ -23,7 +23,7 @@ import java.util.function.Function;
 
 import org.grails.datastore.gorm.query.criteria.DetachedAssociationCriteria;
 
-/** TODO: Add description. */
+/** Maps detached association criteria by association path for alias registration. */
 public class AliasMapEntryFunction
         implements Function<DetachedAssociationCriteria<?>, Map.Entry<String, DetachedAssociationCriteria<?>>> {
 
diff --git a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/query/HqlListQueryBuilder.java b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/query/HqlListQueryBuilder.java
index 53101799d5..c8e4cbf22e 100644
--- a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/query/HqlListQueryBuilder.java
+++ b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/query/HqlListQueryBuilder.java
@@ -36,7 +36,6 @@ import org.grails.orm.hibernate.cfg.domainbinding.hibernate.HibernatePersistentP
  * @author graemerocher
  * @since 7.0.0
  */
-//TODO Cleanup
 public class HqlListQueryBuilder {
 
     private final GrailsHibernatePersistentEntity entity;
diff --git a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/query/HqlQueryContext.java b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/query/HqlQueryContext.java
index bf38f30742..4c20426231 100644
--- a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/query/HqlQueryContext.java
+++ b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/query/HqlQueryContext.java
@@ -58,7 +58,6 @@ import static org.grails.orm.hibernate.query.HqlQueryMethods.convertValue;
     "PMD.AvoidLiteralsInIfCondition",
     "PMD.UseLocaleWithCaseConversions"
 })
-//TODO Cleanup
 public record HqlQueryContext(
         String hql,
         Class<?> targetClass,
diff --git a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/query/JpaQueryContext.java b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/query/JpaQueryContext.java
index c12153df2b..fe5f2b41b9 100644
--- a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/query/JpaQueryContext.java
+++ b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/query/JpaQueryContext.java
@@ -24,8 +24,8 @@ import jakarta.persistence.criteria.Path;
 /**
  * Orchestrator for JPA query translation state (Aliases, Joins, Expressions).
  *
- * TODO: Better separation of concerns between JpaQueryContext and ExpressionResolver.
- * It is a bit icky that AliasRegistry and JoinTracker are passed into ExpressionResolver.
+ * {@link ExpressionResolver} receives the shared {@link AliasRegistry} and {@link JoinTracker}
+ * so aliases and joins remain scoped to the current root or subquery context.
  *
  * @author walterduquedeestrada
  * @author graemerocher


(grails-core) 02/11: Refresh Micronaut BOM Jackson comments

Posted by ja...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

jamesfredley pushed a commit to branch cleanup/8.0-h7-todo-doc-cleanup
in repository https://gitbox.apache.org/repos/asf/grails-core.git

commit fed290e555906b5697def9adff51211a6c13bf9d
Author: James Fredley <ja...@users.noreply.github.com>
AuthorDate: Sat Jul 4 22:45:44 2026 -0400

    Refresh Micronaut BOM Jackson comments
    
    Assisted-by: Hephaestus:openai/gpt-5.5
---
 grails-bom/hibernate5-micronaut/build.gradle | 8 +++++---
 grails-bom/hibernate7-micronaut/build.gradle | 8 +++++---
 2 files changed, 10 insertions(+), 6 deletions(-)

diff --git a/grails-bom/hibernate5-micronaut/build.gradle b/grails-bom/hibernate5-micronaut/build.gradle
index 9d91c8b5b8..6dcbc33759 100644
--- a/grails-bom/hibernate5-micronaut/build.gradle
+++ b/grails-bom/hibernate5-micronaut/build.gradle
@@ -75,9 +75,11 @@ dependencies {
     // Re-export the Micronaut platform so consumers inherit Micronaut's managed versions
     // transitively. Exclude Groovy since we declare the required version explicitly via
     // customBomDependencies. Exclude Spock since we manage that version ourselves.
-    // Exclude Jackson 3 (tools.jackson) since spring-boot-dependencies manages that version,
-    // and Micronaut can lag behind Spring Boot's patch bumps (e.g. SB 4.0.6 ships
-    // jackson-bom 3.1.2 while micronaut-platform 5.0.0-M2 still pins 3.1.0).
+    // Exclude Jackson 3 (tools.jackson) since spring-boot-dependencies manages that version
+    // and the two platforms routinely disagree on the patch (e.g. SB 4.0.6 ships
+    // jackson-bom 3.1.2 while micronaut-platform 5.0.0 pins 3.1.3). Let Spring Boot
+    // remain the single source of truth so the dependency-version validator does not
+    // see drift between probe and project resolution.
     api(platform("io.micronaut.platform:micronaut-platform:$micronautPlatformVersion")) {
         exclude group: 'org.apache.groovy'
         exclude group: 'org.spockframework'
diff --git a/grails-bom/hibernate7-micronaut/build.gradle b/grails-bom/hibernate7-micronaut/build.gradle
index a6206e0567..e7702603aa 100644
--- a/grails-bom/hibernate7-micronaut/build.gradle
+++ b/grails-bom/hibernate7-micronaut/build.gradle
@@ -75,9 +75,11 @@ dependencies {
     // Re-export the Micronaut platform so consumers inherit Micronaut's managed versions
     // transitively. Exclude Groovy since we declare the required version explicitly via
     // customBomDependencies. Exclude Spock since the base BOM manages that version.
-    // Exclude Jackson 3 (tools.jackson) since spring-boot-dependencies manages that version,
-    // and Micronaut can lag behind Spring Boot's patch bumps (e.g. SB 4.0.6 ships
-    // jackson-bom 3.1.2 while micronaut-platform 5.0.0-M2 still pins 3.1.0).
+    // Exclude Jackson 3 (tools.jackson) since spring-boot-dependencies manages that version
+    // and the two platforms routinely disagree on the patch (e.g. SB 4.0.6 ships
+    // jackson-bom 3.1.2 while micronaut-platform 5.0.0 pins 3.1.3). Let Spring Boot
+    // remain the single source of truth so the dependency-version validator does not
+    // see drift between probe and project resolution.
     api(platform("io.micronaut.platform:micronaut-platform:$micronautPlatformVersion")) {
         exclude group: 'org.apache.groovy'
         exclude group: 'org.spockframework'


(grails-core) 06/11: Clarify Hibernate 7 domain binding comments

Posted by ja...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

jamesfredley pushed a commit to branch cleanup/8.0-h7-todo-doc-cleanup
in repository https://gitbox.apache.org/repos/asf/grails-core.git

commit 92ddb780214072537f0b82d898495b6ab87e275e
Author: James Fredley <ja...@users.noreply.github.com>
AuthorDate: Sun Jul 5 00:19:30 2026 -0400

    Clarify Hibernate 7 domain binding comments
    
    Assisted-by: Hephaestus:openai/gpt-5.5
---
 .../orm/hibernate/cfg/domainbinding/binder/ComponentBinder.java   | 8 ++++----
 .../orm/hibernate/cfg/domainbinding/binder/PropertyBinder.java    | 1 -
 .../cfg/domainbinding/secondpass/CollectionSecondPassBinder.java  | 8 ++++----
 3 files changed, 8 insertions(+), 9 deletions(-)

diff --git a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/ComponentBinder.java b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/ComponentBinder.java
index ac7e412709..dcb45e1f50 100644
--- a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/ComponentBinder.java
+++ b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/ComponentBinder.java
@@ -31,10 +31,10 @@ import org.grails.orm.hibernate.cfg.domainbinding.hibernate.HibernateEmbeddedCol
 import org.grails.orm.hibernate.cfg.domainbinding.hibernate.HibernateEmbeddedProperty;
 import org.grails.orm.hibernate.cfg.domainbinding.hibernate.HibernatePersistentProperty;
 
-// TODO (Hibernate 8 refactor): ComponentBinder holds a GrailsPropertyBinder reference set post-construction
-// via setGrailsPropertyBinder() to break a circular dependency (ComponentBinder ↔ GrailsPropertyBinder ↔
-// CollectionBinder ↔ ComponentBinder). This mutual dependency should be resolved by introducing a shared
-// binding context or factory object that all binders receive at construction time.
+// ComponentBinder holds a GrailsPropertyBinder reference set post-construction via
+// setGrailsPropertyBinder() to break a circular dependency (ComponentBinder ↔ GrailsPropertyBinder ↔
+// CollectionBinder ↔ ComponentBinder). A future major release can introduce a shared binding context or
+// factory object that all binders receive at construction time.
 /**
  * Binds embedded components and embedded collection elements to the Hibernate meta-model.
  *
diff --git a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/PropertyBinder.java b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/PropertyBinder.java
index c85a7a9a2d..f6c931a578 100644
--- a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/PropertyBinder.java
+++ b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/PropertyBinder.java
@@ -86,7 +86,6 @@ public class PropertyBinder {
         prop.setPropertyAccessorName(accessorName);
 
         prop.setOptional(persistentProperty.isNullable());
-        //TODO Change to Hibernate hierarchy
         if (persistentProperty instanceof Association<?> association &&
                 !(persistentProperty instanceof HibernateEnumProperty)) {
             prop.setCascade(cascadeBehaviorFetcher.getCascadeBehaviour(association));
diff --git a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/secondpass/CollectionSecondPassBinder.java b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/secondpass/CollectionSecondPassBinder.java
index e652d46aad..a71b3ca4e5 100644
--- a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/secondpass/CollectionSecondPassBinder.java
+++ b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/secondpass/CollectionSecondPassBinder.java
@@ -34,10 +34,10 @@ import org.grails.orm.hibernate.cfg.domainbinding.hibernate.HibernateToManyPrope
 /**
  * Refactored from CollectionBinder to handle collection second pass binding.
  */
-// TODO (Hibernate 8 refactor): CollectionSecondPassBinder receives its ComponentBinder reference via
-// setComponentBinder() post-construction (mirroring the GrailsPropertyBinder ↔ ComponentBinder circular
-// dependency). This should be resolved by introducing a shared binding context or factory that all binders
-// receive at construction time, eliminating the need for post-construction wiring.
+// CollectionSecondPassBinder receives its ComponentBinder reference via setComponentBinder()
+// post-construction, mirroring the GrailsPropertyBinder ↔ ComponentBinder circular dependency. A future
+// major release can introduce a shared binding context or factory that all binders receive at construction
+// time, eliminating the need for post-construction wiring.
 @SuppressWarnings("PMD.DataflowAnomalyAnalysis")
 public class CollectionSecondPassBinder {
 


(grails-core) 04/11: Remove stale Hibernate 7 packaging TODOs

Posted by ja...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

jamesfredley pushed a commit to branch cleanup/8.0-h7-todo-doc-cleanup
in repository https://gitbox.apache.org/repos/asf/grails-core.git

commit b8ca6c1e12245838d9e397615e3dc89a5f633178
Author: James Fredley <ja...@users.noreply.github.com>
AuthorDate: Sat Jul 4 23:38:41 2026 -0400

    Remove stale Hibernate 7 packaging TODOs
    
    Assisted-by: Hephaestus:openai/gpt-5.5
---
 grails-data-hibernate7/boot-plugin/build.gradle                      | 1 -
 grails-data-hibernate7/dbmigration/build.gradle                      | 5 +----
 .../main/groovy/grails/plugin/hibernate/HibernateGrailsPlugin.groovy | 2 +-
 3 files changed, 2 insertions(+), 6 deletions(-)

diff --git a/grails-data-hibernate7/boot-plugin/build.gradle b/grails-data-hibernate7/boot-plugin/build.gradle
index b3a150093b..88cabb50e9 100644
--- a/grails-data-hibernate7/boot-plugin/build.gradle
+++ b/grails-data-hibernate7/boot-plugin/build.gradle
@@ -39,7 +39,6 @@ ext {
 }
 
 dependencies {
-    // TODO: Clarify and clean up dependencies
     implementation platform(project(':grails-hibernate7-bom'))
 
     compileOnly project(':grails-shell-cli'), {
diff --git a/grails-data-hibernate7/dbmigration/build.gradle b/grails-data-hibernate7/dbmigration/build.gradle
index f2ccbd4f48..d57c229da1 100644
--- a/grails-data-hibernate7/dbmigration/build.gradle
+++ b/grails-data-hibernate7/dbmigration/build.gradle
@@ -42,7 +42,6 @@ configurations {
 }
 
 dependencies {
-    // TODO: Clarify and clean up dependencies
     implementation platform(project(':grails-hibernate7-bom'))
 
     implementation("org.liquibase:liquibase-core")
@@ -64,9 +63,7 @@ dependencies {
     implementation(project(':grails-shell-cli')) {
         exclude group: 'org.slf4j', module: 'slf4j-simple'
 
-        // TODO: the shell cli is exporting groovy 3, while this project is expected to use groovy 4
-        //       this plugin needs split into commands & the plugin itself so that different versions
-        //       of groovy can be used
+        // Keep this plugin on the repository Groovy version instead of the shell CLI's transitive Groovy line.
         exclude group: 'org.codehaus.groovy'
     }
 
diff --git a/grails-data-hibernate7/grails-plugin/src/main/groovy/grails/plugin/hibernate/HibernateGrailsPlugin.groovy b/grails-data-hibernate7/grails-plugin/src/main/groovy/grails/plugin/hibernate/HibernateGrailsPlugin.groovy
index 9597047d20..b758e72302 100644
--- a/grails-data-hibernate7/grails-plugin/src/main/groovy/grails/plugin/hibernate/HibernateGrailsPlugin.groovy
+++ b/grails-data-hibernate7/grails-plugin/src/main/groovy/grails/plugin/hibernate/HibernateGrailsPlugin.groovy
@@ -100,7 +100,7 @@ class HibernateGrailsPlugin extends Plugin {
 
     @Override
     void onChange(Map<String, Object> event) {
-        // TODO: rewrite onChange handling
+        // No plugin-level onChange handling is currently implemented here.
     }
 
 }


(grails-core) 07/11: Remove stale Hibernate 7 utility TODOs

Posted by ja...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

jamesfredley pushed a commit to branch cleanup/8.0-h7-todo-doc-cleanup
in repository https://gitbox.apache.org/repos/asf/grails-core.git

commit 2b8e05411f83e1ff7deaef62bfa5267606806991
Author: James Fredley <ja...@users.noreply.github.com>
AuthorDate: Sun Jul 5 00:29:22 2026 -0400

    Remove stale Hibernate 7 utility TODOs
    
    Assisted-by: Hephaestus:openai/gpt-5.5
---
 .../orm/hibernate/cfg/domainbinding/generator/GrailsNativeGenerator.java | 1 -
 .../orm/hibernate/cfg/domainbinding/util/NamingStrategyProvider.java     | 1 -
 .../orm/hibernate/cfg/domainbinding/util/TableForManyCalculator.java     | 1 -
 3 files changed, 3 deletions(-)

diff --git a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/generator/GrailsNativeGenerator.java b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/generator/GrailsNativeGenerator.java
index e5119e12e5..59667d8bb8 100644
--- a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/generator/GrailsNativeGenerator.java
+++ b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/generator/GrailsNativeGenerator.java
@@ -36,7 +36,6 @@ import org.hibernate.id.enhanced.SequenceStyleGenerator;
  * @author Graeme Rocher
  * @since 7.0
  */
-//TODO Hacky implementation
 public class GrailsNativeGenerator extends NativeGenerator {
 
     @Serial
diff --git a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/util/NamingStrategyProvider.java b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/util/NamingStrategyProvider.java
index 680e351124..b189600cec 100644
--- a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/util/NamingStrategyProvider.java
+++ b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/util/NamingStrategyProvider.java
@@ -85,7 +85,6 @@ public class NamingStrategyProvider {
         if (strategy instanceof PhysicalNamingStrategy) {
             return strategy;
         }
-        //TODO Candidate for SneakyThrow
         return strategyClass.newInstance();
     }
 
diff --git a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/util/TableForManyCalculator.java b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/util/TableForManyCalculator.java
index 4fdca46a41..f9c953f5a9 100644
--- a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/util/TableForManyCalculator.java
+++ b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/util/TableForManyCalculator.java
@@ -112,7 +112,6 @@ public class TableForManyCalculator {
 
         // Only proceed with association logic if it's an actual Association and has an associated
         // entity
-        //TODO Use Hibernate hierarchy
         if (!(property instanceof Association<?> association)) {
             throw new MappingException("Property [" + property.getName() +
                     "] is not an association and is not a basic type for table calculation.");


(grails-core) 09/11: Remove stale Hibernate 7 query spec TODOs

Posted by ja...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

jamesfredley pushed a commit to branch cleanup/8.0-h7-todo-doc-cleanup
in repository https://gitbox.apache.org/repos/asf/grails-core.git

commit fc0e31b3f374bf24a17d941387db48d95740f42e
Author: James Fredley <ja...@users.noreply.github.com>
AuthorDate: Sun Jul 5 00:49:25 2026 -0400

    Remove stale Hibernate 7 query spec TODOs
    
    Assisted-by: Hephaestus:openai/gpt-5.5
---
 .../groovy/grails/gorm/tests/ExecuteQueryWithinValidatorSpec.groovy    | 1 -
 .../groovy/grails/gorm/tests/WhereQueryWithAssociationSortSpec.groovy  | 1 -
 .../grails/gorm/tests/detachedcriteria/DetachedCriteriaJoinSpec.groovy | 3 ---
 .../groovy/grails/gorm/tests/hasmany/HasManyWithInQuerySpec.groovy     | 1 -
 4 files changed, 6 deletions(-)

diff --git a/grails-data-hibernate7/core/src/test/groovy/grails/gorm/tests/ExecuteQueryWithinValidatorSpec.groovy b/grails-data-hibernate7/core/src/test/groovy/grails/gorm/tests/ExecuteQueryWithinValidatorSpec.groovy
index 585f28bb16..bed68e188b 100644
--- a/grails-data-hibernate7/core/src/test/groovy/grails/gorm/tests/ExecuteQueryWithinValidatorSpec.groovy
+++ b/grails-data-hibernate7/core/src/test/groovy/grails/gorm/tests/ExecuteQueryWithinValidatorSpec.groovy
@@ -30,7 +30,6 @@ import spock.lang.Specification
 /**
  * Created by graemerocher on 17/02/2017.
  */
-//TODO Not able to distinguish correctly a field projection without an alias
 class ExecuteQueryWithinValidatorSpec extends Specification {
 
     @AutoCleanup @Shared HibernateDatastore hibernateDatastore = new HibernateDatastore(Named, NameType)
diff --git a/grails-data-hibernate7/core/src/test/groovy/grails/gorm/tests/WhereQueryWithAssociationSortSpec.groovy b/grails-data-hibernate7/core/src/test/groovy/grails/gorm/tests/WhereQueryWithAssociationSortSpec.groovy
index 7303fd7b5e..f3de76357c 100644
--- a/grails-data-hibernate7/core/src/test/groovy/grails/gorm/tests/WhereQueryWithAssociationSortSpec.groovy
+++ b/grails-data-hibernate7/core/src/test/groovy/grails/gorm/tests/WhereQueryWithAssociationSortSpec.groovy
@@ -28,7 +28,6 @@ import spock.lang.Issue
 /**
  * Created by graemerocher on 03/11/16.
  */
-//TODO : How to create an alias inside a closure
 class WhereQueryWithAssociationSortSpec extends GrailsDataTckSpec<GrailsDataHibernate7TckManager> {
     void setupSpec() {
         manager.registerDomainClasses(Club, Team)
diff --git a/grails-data-hibernate7/core/src/test/groovy/grails/gorm/tests/detachedcriteria/DetachedCriteriaJoinSpec.groovy b/grails-data-hibernate7/core/src/test/groovy/grails/gorm/tests/detachedcriteria/DetachedCriteriaJoinSpec.groovy
index 20fcd0bee7..89b82c5c9e 100644
--- a/grails-data-hibernate7/core/src/test/groovy/grails/gorm/tests/detachedcriteria/DetachedCriteriaJoinSpec.groovy
+++ b/grails-data-hibernate7/core/src/test/groovy/grails/gorm/tests/detachedcriteria/DetachedCriteriaJoinSpec.groovy
@@ -46,9 +46,6 @@ class DetachedCriteriaJoinSpec extends HibernateGormDatastoreSpec {
         new DetachedCriteria<>(Club).max(10).offset(0).count() == 4
         Club.where {}.max(2).offset(0).count() == 4
         new DetachedCriteria<>(Club).max(2).offset(0).count() == 4
-//TODO THESE SHOULD NOT PASS!
-//        Club.where {}.max(10).offset(10).count() == 4
-//        new DetachedCriteria<>(Club).max(10).offset(10).count() == 4
     }
 
     def 'check if inner join is applied correctly'(){
diff --git a/grails-data-hibernate7/core/src/test/groovy/grails/gorm/tests/hasmany/HasManyWithInQuerySpec.groovy b/grails-data-hibernate7/core/src/test/groovy/grails/gorm/tests/hasmany/HasManyWithInQuerySpec.groovy
index cbe02b4d27..c8440de3ec 100644
--- a/grails-data-hibernate7/core/src/test/groovy/grails/gorm/tests/hasmany/HasManyWithInQuerySpec.groovy
+++ b/grails-data-hibernate7/core/src/test/groovy/grails/gorm/tests/hasmany/HasManyWithInQuerySpec.groovy
@@ -31,7 +31,6 @@ import spock.lang.Specification
 
 @Issue('https://github.com/grails/gorm-hibernate5/issues/78')
 @Rollback
-//TODO Multi valued paths are only allowed for the member of operator
 class HasManyWithInQuerySpec extends Specification {
 
     @Shared @AutoCleanup HibernateDatastore datastore = new HibernateDatastore(getClass().getPackage())


(grails-core) 10/11: Remove stale Hibernate 7 service spec TODOs

Posted by ja...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

jamesfredley pushed a commit to branch cleanup/8.0-h7-todo-doc-cleanup
in repository https://gitbox.apache.org/repos/asf/grails-core.git

commit 38e037834fa03d6e81e4ea57aac88f2d4dd824b6
Author: James Fredley <ja...@users.noreply.github.com>
AuthorDate: Sun Jul 5 00:59:08 2026 -0400

    Remove stale Hibernate 7 service spec TODOs
    
    Assisted-by: Hephaestus:openai/gpt-5.5
---
 .../gorm/tests/compositeid/GlobalConstraintWithCompositeIdSpec.groovy  | 1 -
 .../src/test/groovy/grails/gorm/tests/services/DataServiceSpec.groovy  | 3 +--
 .../groovy/org/grails/orm/hibernate/HibernateGormStaticApiSpec.groovy  | 1 -
 3 files changed, 1 insertion(+), 4 deletions(-)

diff --git a/grails-data-hibernate7/core/src/test/groovy/grails/gorm/tests/compositeid/GlobalConstraintWithCompositeIdSpec.groovy b/grails-data-hibernate7/core/src/test/groovy/grails/gorm/tests/compositeid/GlobalConstraintWithCompositeIdSpec.groovy
index a0cfcbdf2a..7667f41097 100644
--- a/grails-data-hibernate7/core/src/test/groovy/grails/gorm/tests/compositeid/GlobalConstraintWithCompositeIdSpec.groovy
+++ b/grails-data-hibernate7/core/src/test/groovy/grails/gorm/tests/compositeid/GlobalConstraintWithCompositeIdSpec.groovy
@@ -30,7 +30,6 @@ import spock.lang.Issue
 /**
  * Created by graemerocher on 17/02/2017.
  */
-//TODO 2025-04-17 CompositeId not working
 class GlobalConstraintWithCompositeIdSpec extends HibernateGormDatastoreSpec {
 
     def setupSpec() {
diff --git a/grails-data-hibernate7/core/src/test/groovy/grails/gorm/tests/services/DataServiceSpec.groovy b/grails-data-hibernate7/core/src/test/groovy/grails/gorm/tests/services/DataServiceSpec.groovy
index 3992e21350..04d37623e1 100644
--- a/grails-data-hibernate7/core/src/test/groovy/grails/gorm/tests/services/DataServiceSpec.groovy
+++ b/grails-data-hibernate7/core/src/test/groovy/grails/gorm/tests/services/DataServiceSpec.groovy
@@ -401,8 +401,7 @@ class DataServiceSpec extends Specification {
         Product product = productService.findByName("Apple").first()
 
         then:
-        //TODO I am not sure this is the right assertion related to the bug reported
-        //product.attributes.isInitialized()
+        // Accessing the collection verifies that @Join returned the expected initialized association data.
         product.attributes.size() == 1
         product.attributes.iterator().next() == attribute
 
diff --git a/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/HibernateGormStaticApiSpec.groovy b/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/HibernateGormStaticApiSpec.groovy
index 8b64a33847..689a9dffb3 100644
--- a/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/HibernateGormStaticApiSpec.groovy
+++ b/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/HibernateGormStaticApiSpec.groovy
@@ -365,7 +365,6 @@ class HibernateGormStaticApiSpec extends HibernateGormDatastoreSpec {
         thrown(IllegalArgumentException)
     }
 
-    //TODO no transaction is in progress
     void "Test withNewSession"() {
         given:
         new HibernateGormStaticApiEntity(name: "outer").save(flush: true, failOnError: true)


(grails-core) 05/11: Clarify Hibernate 7 core session comments

Posted by ja...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

jamesfredley pushed a commit to branch cleanup/8.0-h7-todo-doc-cleanup
in repository https://gitbox.apache.org/repos/asf/grails-core.git

commit 4746b6e0c3654ff689aca48107472da2a4c456f5
Author: James Fredley <ja...@users.noreply.github.com>
AuthorDate: Sun Jul 5 00:02:12 2026 -0400

    Clarify Hibernate 7 core session comments
    
    Assisted-by: Hephaestus:openai/gpt-5.5
---
 .../main/groovy/org/grails/orm/hibernate/GrailsSessionContext.java  | 2 +-
 .../main/groovy/org/grails/orm/hibernate/HibernateDatastore.java    | 4 ++--
 .../groovy/org/grails/orm/hibernate/HibernateGormStaticApi.groovy   | 1 -
 .../src/main/groovy/org/grails/orm/hibernate/HibernateSession.java  | 6 ------
 4 files changed, 3 insertions(+), 10 deletions(-)

diff --git a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/GrailsSessionContext.java b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/GrailsSessionContext.java
index 8e5423d775..76416ce373 100644
--- a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/GrailsSessionContext.java
+++ b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/GrailsSessionContext.java
@@ -60,7 +60,7 @@ public class GrailsSessionContext implements CurrentSessionContext {
     protected final SessionFactoryImplementor sessionFactory;
     protected CurrentSessionContext jtaSessionContext;
 
-    // TODO make configurable?
+    // Match Spring's default: currentSession() must not create a Session outside an active transaction.
     protected boolean allowCreate = false;
 
     /**
diff --git a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/HibernateDatastore.java b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/HibernateDatastore.java
index b9e68b62ac..347ad93d16 100644
--- a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/HibernateDatastore.java
+++ b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/HibernateDatastore.java
@@ -18,8 +18,8 @@
  */
 package org.grails.orm.hibernate;
 
-// TODO: Refactor multi-datasource architecture to avoid the parent-child datastore map and anonymous subclasses.
-// Consider a single CompositeDatastore approach for the next major release.
+// Multi-datasource support currently uses a parent-child datastore map and child datastore instances.
+// A future major release can replace this with a single CompositeDatastore approach.
 
 import java.io.Closeable;
 import java.io.IOException;
diff --git a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/HibernateGormStaticApi.groovy b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/HibernateGormStaticApi.groovy
index 80b7ede244..67e1bf3abd 100644
--- a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/HibernateGormStaticApi.groovy
+++ b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/HibernateGormStaticApi.groovy
@@ -74,7 +74,6 @@ import org.grails.orm.hibernate.support.HibernateRuntimeUtils
  */
 @Slf4j
 @CompileStatic
-//TODO Duplication!!
 class HibernateGormStaticApi<D> extends GormStaticApi<D> {
 
     protected GrailsHibernateTemplate hibernateTemplate
diff --git a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/HibernateSession.java b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/HibernateSession.java
index 08b45e0836..87063370ce 100644
--- a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/HibernateSession.java
+++ b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/HibernateSession.java
@@ -71,7 +71,6 @@ import org.grails.orm.hibernate.query.MutationHqlQuery;
  * @author Graeme Rocher
  * @since 1.0
  */
-//TODO Cleanup
 @SuppressWarnings({"rawtypes", "PMD.DataflowAnomalyAnalysis", "PMD.AvoidDuplicateLiterals"})
 public class HibernateSession extends AbstractAttributeStoringSession implements QueryAliasAwareSession {
 
@@ -288,7 +287,6 @@ public class HibernateSession extends AbstractAttributeStoringSession implements
 
     @Override
     @SuppressWarnings("PMD.DataflowAnomalyAnalysis")
-    //TODO Clean up
     public Serializable getObjectIdentifier(Object instance) {
         if (instance == null) return null;
         if (proxyHandler.isProxy(instance)) {
@@ -313,7 +311,6 @@ public class HibernateSession extends AbstractAttributeStoringSession implements
      */
     @Override
     @SuppressWarnings("PMD.DataflowAnomalyAnalysis")
-    //TODO Clean up
     public long deleteAll(final QueryableCriteria criteria) {
         return getHibernateTemplate().execute((GrailsHibernateTemplate.HibernateCallback<Integer>) session -> {
             JpaQueryBuilder builder = new JpaQueryBuilder(criteria);
@@ -355,7 +352,6 @@ public class HibernateSession extends AbstractAttributeStoringSession implements
      */
     @Override
     @SuppressWarnings("PMD.DataflowAnomalyAnalysis")
-    //TODO Cleanup
     public long updateAll(final QueryableCriteria criteria, final Map<String, Object> properties) {
         return getHibernateTemplate().execute((GrailsHibernateTemplate.HibernateCallback<Integer>) session -> {
             JpaQueryBuilder builder = new JpaQueryBuilder(criteria);
@@ -388,7 +384,6 @@ public class HibernateSession extends AbstractAttributeStoringSession implements
 
     @Override
     @SuppressWarnings({"PMD.DataflowAnomalyAnalysis"})
-    //TODO Cleanup
     public List retrieveAll(final Class type, final Iterable keys) {
         final GrailsHibernatePersistentEntity persistentEntity = (GrailsHibernatePersistentEntity) getMappingContext().getPersistentEntity(type.getName());
         final String entityName = persistentEntity.getName();
@@ -453,7 +448,6 @@ public class HibernateSession extends AbstractAttributeStoringSession implements
         }
     }
 
-    //TODO could be used
     protected <D> HibernateGormStaticApi<D> getStaticApi(Class<D> type) {
         return new HibernateGormStaticApi<>(
             type,


(grails-core) 03/11: Align Forge picocli with root version pin

Posted by ja...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

jamesfredley pushed a commit to branch cleanup/8.0-h7-todo-doc-cleanup
in repository https://gitbox.apache.org/repos/asf/grails-core.git

commit 243a516577ad09925d8cb33bddb96d3bd1af2ccc
Author: James Fredley <ja...@users.noreply.github.com>
AuthorDate: Sat Jul 4 23:02:09 2026 -0400

    Align Forge picocli with root version pin
    
    Assisted-by: Hephaestus:openai/gpt-5.5
---
 grails-forge/gradle.properties | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/grails-forge/gradle.properties b/grails-forge/gradle.properties
index 6a59372d66..4d15b0d4b2 100644
--- a/grails-forge/gradle.properties
+++ b/grails-forge/gradle.properties
@@ -44,7 +44,7 @@ nexusPublishVersion=1.3.0
 nohttpGradleVersion=0.0.11
 objenesisVersion=3.4
 postgresSocketFactoryVersion=1.17.1
-picocliVersion=4.7.5
+picocliVersion=4.7.6
 reflectionsVersion=0.10.2
 rockerVersion=2.2.1
 shadowVersion=8.3.6


(grails-core) 01/11: Update agent guides for Grails 8 versions

Posted by ja...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

jamesfredley pushed a commit to branch cleanup/8.0-h7-todo-doc-cleanup
in repository https://gitbox.apache.org/repos/asf/grails-core.git

commit 2989956d66feb64e479edb7d20d58be23f8fed55
Author: James Fredley <ja...@users.noreply.github.com>
AuthorDate: Sat Jul 4 22:18:22 2026 -0400

    Update agent guides for Grails 8 versions
    
    Assisted-by: Hephaestus:openai/gpt-5.5
---
 .agents/skills/grails-developer/SKILL.md | 14 +++++++-------
 .agents/skills/groovy-developer/SKILL.md | 14 +++++++-------
 .agents/skills/java-developer/SKILL.md   | 20 ++++++++++----------
 AGENTS.md                                | 16 ++++++++--------
 4 files changed, 32 insertions(+), 32 deletions(-)

diff --git a/.agents/skills/grails-developer/SKILL.md b/.agents/skills/grails-developer/SKILL.md
index 9a7f60068c..a6856c4e75 100644
--- a/.agents/skills/grails-developer/SKILL.md
+++ b/.agents/skills/grails-developer/SKILL.md
@@ -13,7 +13,7 @@ Licensed to the Apache Software Foundation (ASF) under one or more contributor l
 
 - Provide detailed guidance for building current Grails web applications and REST APIs.
 - Assist with GORM for data modeling, controllers for request handling, services for business logic, and views (GSP, JSON, Markup).
-- Support testing with Spock 2.3 (unit/integration tests) and Geb for browser automation.
+- Support testing with Spock 2.4 (unit/integration tests) and Geb for browser automation.
 - Guide plugin usage and development, security implementation, and deployment strategies.
 - Help with configuration, internationalization, async programming, and performance optimization.
 
@@ -31,11 +31,11 @@ Activate this skill when developing with current Grails, including:
 ## Technology Stack
 
 Current Grails is built on:
-- **Spring Boot**: 4.0.x
+- **Spring Boot**: 4.1.x
 - **Spring Framework**: 7.0.x
-- **Groovy**: 4.0.x
-- **Gradle**: 8.14.x
-- **Spock**: 2.3-groovy-4.0
+- **Groovy**: 5.0.x
+- **Gradle**: 9.6.x
+- **Spock**: 2.4-groovy-5.0
 - **Jakarta EE**: 10 (migrated from javax.*)
 - **Micronaut**: Optional via `grails-micronaut` plugin
 
@@ -865,6 +865,6 @@ grails.plugin.springsecurity.controllerAnnotations.staticRules = [
 - **Grails User Guide**: https://grails.apache.org/docs/latest/guide/single.html
 - **GORM Documentation**: https://grails.apache.org/docs/latest/grails-data/
 - **Grails Plugins**: https://grails.apache.org/plugins.html
-- **Groovy 4 Documentation**: https://docs.groovy-lang.org/docs/groovy-4.0.30/html/documentation/
-- **Spock Framework**: https://spockframework.org/spock/docs/2.3/all_in_one.html
+- **Groovy 5 Documentation**: https://docs.groovy-lang.org/docs/groovy-5.0.7/html/documentation/
+- **Spock Framework**: https://spockframework.org/spock/docs/2.4/all_in_one.html
 - **Geb Manual**: https://groovy.apache.org/geb/manual/current/
diff --git a/.agents/skills/groovy-developer/SKILL.md b/.agents/skills/groovy-developer/SKILL.md
index 0b7feab35f..ab5ed7ded1 100644
--- a/.agents/skills/groovy-developer/SKILL.md
+++ b/.agents/skills/groovy-developer/SKILL.md
@@ -1,6 +1,6 @@
 ---
 name: groovy-developer
-description: Expert guide for Groovy 4 development, covering concise syntax, closures, DSLs, metaprogramming, static compilation, and integration with Java 17 and Grails
+description: Expert guide for Groovy 5 development, covering concise syntax, closures, DSLs, metaprogramming, static compilation, and integration with Java 21 and Grails
 license: Apache-2.0
 ---
 <!--
@@ -11,11 +11,11 @@ Licensed to the Apache Software Foundation (ASF) under one or more contributor l
 
 ## What I Do
 
-- Provide deep expertise in Groovy 4.0, including core language features: syntax, closures, traits, GStrings, operators, and Groovy Truth.
+- Provide deep expertise in Groovy 5.0, including core language features: syntax, closures, traits, GStrings, operators, and Groovy Truth.
 - Guide metaprogramming techniques: runtime (categories, ExpandoMetaClass, extension modules) and compile-time (AST transformations like @Immutable, @Builder, @Delegate, @Singleton, @Log, @Memoized).
 - Assist with DSL creation and usage (MarkupBuilder, JsonBuilder, builders for configuration).
 - Support testing with Spock Framework (BDD, data-driven tests, mocking) and built-in power assertions.
-- Help integrate Groovy with Java 17: joint compilation, Gradle builds, Grails, and Spring Boot.
+- Help integrate Groovy with Java 21: joint compilation, Gradle builds, Grails, and Spring Boot.
 - Cover data handling: JSON/XML parsing and building, Groovy SQL, collection processing.
 - Advise on performance: @CompileStatic, @TypeChecked, @GrailsCompileStatic for optimal execution.
 
@@ -27,11 +27,11 @@ Activate this skill for any Groovy-related task, including:
 - Building or enhancing Gradle build scripts (build.gradle).
 - Creating DSLs for configuration, testing, or business rules.
 - Writing Spock specifications for unit and integration tests.
-- Migrating from older Groovy versions (2.x/3.x) to 4.0.
+- Migrating from older Groovy versions (2.x/3.x/4.x) to 5.0.
 - Performance optimization with static compilation.
 - Working with JSON/XML data, GORM criteria queries, or builders.
 
-## Groovy 4 Key Features
+## Groovy 5 Key Features
 
 ### Concise Syntax
 ```groovy
@@ -499,7 +499,7 @@ sql.execute("INSERT INTO books (title) VALUES ($title)")
 
 ## Resources
 
-- **Groovy 4 Documentation**: https://docs.groovy-lang.org/docs/groovy-4.0.30/html/documentation/
+- **Groovy 5 Documentation**: https://docs.groovy-lang.org/docs/groovy-5.0.7/html/documentation/
 - **Groovy Style Guide**: https://groovy-lang.org/style-guide.html
 - **GORM Documentation**: https://grails.apache.org/docs/latest/grails-data/
-- **Spock Framework**: https://spockframework.org/spock/docs/2.3/all_in_one.html
+- **Spock Framework**: https://spockframework.org/spock/docs/2.4/all_in_one.html
diff --git a/.agents/skills/java-developer/SKILL.md b/.agents/skills/java-developer/SKILL.md
index 94d7dc5b93..a8db1865c4 100644
--- a/.agents/skills/java-developer/SKILL.md
+++ b/.agents/skills/java-developer/SKILL.md
@@ -1,6 +1,6 @@
 ---
 name: java-developer
-description: Guide for developing in Java 17 LTS, including modern features, best practices, and integration with Groovy/Grails projects
+description: Guide for developing on the Java 21 baseline, including modern features, best practices, and integration with Groovy/Grails projects
 license: Apache-2.0
 ---
 <!--
@@ -11,8 +11,8 @@ Licensed to the Apache Software Foundation (ASF) under one or more contributor l
 
 ## What I Do
 
-- Provide guidance on Java 17 LTS syntax, features, and APIs for use in Grails/Groovy projects.
-- Assist with code generation, refactoring, and debugging using Java 17 enhancements like records, sealed classes, pattern matching, and text blocks.
+- Provide guidance on Java 21 syntax, features, and APIs for use in Grails/Groovy projects.
+- Assist with code generation, refactoring, and debugging using modern Java features like records, sealed classes, pattern matching, and text blocks.
 - Recommend best practices for Java code that interoperates with Groovy in mixed-language projects.
 - Guide on tooling: Gradle builds, JDK setup, testing with JUnit 5/Spock, and profiling.
 
@@ -21,11 +21,11 @@ Licensed to the Apache Software Foundation (ASF) under one or more contributor l
 Use this skill when working on Java code within this repository, especially for:
 - Writing Java classes that will be used alongside Groovy code.
 - Implementing features using records, sealed classes, or pattern matching for instanceof.
-- Migrating older Java code (e.g., Java 8/11) to Java 17 idioms.
+- Migrating older Java code (e.g., Java 8/11/17) to Java 21 idioms.
 - Performance optimization, security hardening, or module system (JPMS) questions.
 - Understanding how Java code integrates with Groovy's dynamic features.
 
-## Java 17 Key Features
+## Java 21 Baseline Features
 
 ### Records (JEP 395)
 Immutable data carriers with auto-generated constructors, accessors, equals, hashCode, and toString:
@@ -61,13 +61,13 @@ public non-sealed class Rectangle implements Shape {
 ### Pattern Matching for instanceof (JEP 394)
 Eliminate redundant casts:
 ```java
-// Before Java 17
+// Before pattern matching
 if (obj instanceof String) {
     String s = (String) obj;
     System.out.println(s.length());
 }
 
-// Java 17
+// Modern Java
 if (obj instanceof String s) {
     System.out.println(s.length());
 }
@@ -200,7 +200,7 @@ def "Java record should work in Spock tests"() {
 
 ## Performance and Profiling
 
-### JVM Options for Java 17
+### JVM Options for Java 21
 ```bash
 # Recommended GC for most workloads
 -XX:+UseG1GC
@@ -266,6 +266,6 @@ List<String> copy = List.copyOf(mutableList);
 
 ## Resources
 
-- **Java 17 Documentation**: https://docs.oracle.com/en/java/javase/17/
-- **Java Language Updates**: https://docs.oracle.com/en/java/javase/17/language/
+- **Java 21 Documentation**: https://docs.oracle.com/en/java/javase/21/
+- **Java Language Updates**: https://docs.oracle.com/en/java/javase/21/language/
 - **JEP Index**: https://openjdk.org/jeps/0
diff --git a/AGENTS.md b/AGENTS.md
index e58c03b0fb..fb57a69e7b 100644
--- a/AGENTS.md
+++ b/AGENTS.md
@@ -72,9 +72,9 @@ export GRADLE_OPTS="-Xms2G -Xmx5G"
 | Skill | Path | Use For |
 |-------|------|---------|
 | **grails-developer** | `.agents/skills/grails-developer/SKILL.md` | Current Grails apps, GORM, controllers, views |
-| **groovy-developer** | `.agents/skills/groovy-developer/SKILL.md` | Groovy 4 syntax, closures, DSLs, Spock |
+| **groovy-developer** | `.agents/skills/groovy-developer/SKILL.md` | Groovy 5 syntax, closures, DSLs, Spock |
 | **grails-8-upgrade** | `.agents/skills/grails-8-upgrade/SKILL.md` | Upgrading Grails applications from 7.x to 8 |
-| **java-developer** | `.agents/skills/java-developer/SKILL.md` | Java 17 features, Groovy interop |
+| **java-developer** | `.agents/skills/java-developer/SKILL.md` | Java 21 features, Groovy interop |
 | **hibernate-developer** | `.agents/skills/hibernate-developer/SKILL.md` | Hibernate 7 mapping, binders, generators |
 | **violation-fixer** | `.agents/skills/violation-fixer/SKILL.md` | Fix style/analysis violations (CodeNarc, Checkstyle, PMD, SpotBugs) |
 | **test-fixer** | `.agents/skills/test-fixer/SKILL.md` | Aggregate and fix test failures |
@@ -84,11 +84,11 @@ export GRADLE_OPTS="-Xms2G -Xmx5G"
 | Component | Version |
 |-----------|---------|
 | JDK | 21+ (baseline 21) |
-| Groovy | 4.0.x |
-| Spring Boot | 4.0.x |
+| Groovy | 5.0.x |
+| Spring Boot | 4.1.x |
 | Spring Framework | 7.0.x |
-| Spock | 2.4-groovy-4.0 |
-| Gradle | 8.14.x |
+| Spock | 2.4-groovy-5.0 |
+| Gradle | 9.6.x |
 | Jakarta EE | 10 |
 
 ## Project Structure
@@ -280,8 +280,8 @@ and known non-findings — before reporting issues.
 ## Resources
 
 - **Grails Guide**: https://grails.apache.org/docs/latest/guide/single.html
-- **Groovy 4 Docs**: https://docs.groovy-lang.org/docs/groovy-4.0.30/html/documentation/
-- **Spock 2.3 Docs**: https://spockframework.org/spock/docs/2.3/all_in_one.html
+- **Groovy 5 Docs**: https://docs.groovy-lang.org/docs/groovy-5.0.7/html/documentation/
+- **Spock 2.4 Docs**: https://spockframework.org/spock/docs/2.4/all_in_one.html
 - **GORM Docs**: https://grails.apache.org/docs/latest/grails-data/
 - **Issues**: https://github.com/apache/grails-core/issues
 - **Slack**: https://grails.slack.com


(grails-core) 11/11: Remove stale Hibernate 7 dbmigration TODO

Posted by ja...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

jamesfredley pushed a commit to branch cleanup/8.0-h7-todo-doc-cleanup
in repository https://gitbox.apache.org/repos/asf/grails-core.git

commit 12aa6e7b8592de5931b3db2819dcf06f9f6a8dcc
Author: James Fredley <ja...@users.noreply.github.com>
AuthorDate: Sun Jul 5 01:08:37 2026 -0400

    Remove stale Hibernate 7 dbmigration TODO
    
    Assisted-by: Hephaestus:openai/gpt-5.5
---
 .../dbmigration-core/src/test/java/liquibase/harness/diff/Posts.java    | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/grails-data-hibernate7/dbmigration-core/src/test/java/liquibase/harness/diff/Posts.java b/grails-data-hibernate7/dbmigration-core/src/test/java/liquibase/harness/diff/Posts.java
index ee1d254782..a8e14eb2b4 100644
--- a/grails-data-hibernate7/dbmigration-core/src/test/java/liquibase/harness/diff/Posts.java
+++ b/grails-data-hibernate7/dbmigration-core/src/test/java/liquibase/harness/diff/Posts.java
@@ -4,7 +4,7 @@ import java.sql.Date;
 
 public class Posts {
     int id;
-    int authorId; //TODO this might not be needed depending on mapping strategy
+    int authorId;
     String title;
     String description;
     String content;