You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@grails.apache.org by jd...@apache.org on 2026/09/24 14:16:25 UTC

(grails-core) branch fix/optimistic-locking-spec-join-assert updated (43fca1cf80 -> 169193b014)

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

jdaugherty pushed a change to branch fix/optimistic-locking-spec-join-assert
in repository https://gitbox.apache.org/repos/asf/grails-core.git


    omit 43fca1cf80 fix(neo4j): make OptimisticLockingSpec commit, observe and verify the background write
    omit 4fc28038a7 Merge pull request #16064 from borinquenkid/fix/gorm-transaction-attribute-copy
    omit aaf0248a47 Merge remote-tracking branch 'upstream/8.0.x' into pr-16064
    omit d8bb65c595 Merge pull request #16065 from borinquenkid/fix/web-transaction-attribute-copy
    omit 1ef86eb1cb Merge remote-tracking branch 'upstream/8.0.x' into pr-16065
    omit 157195f338 Merge pull request #16391 from apache/fix/hibernate7-to-one-read-only-on-validation-error
    omit dc5fe4ff03 Mark to-one associations read-only after a validation error in Hibernate 7
    omit 7ea4cb9d8e Merge pull request #16067 from apache/fix/stacktrace-filterer-test-log-capture
    omit 64da415999 test: tighten StackTrace LogCapture assertions and pin web-mvc test logging
    omit ea69ef4501 Merge branch '8.0.x' into fix/stacktrace-filterer-test-log-capture
    omit e35e3ae1b1 Merge pull request #15965 from apache/chore/remove-jodd-wot
    omit 2da4fa140b Bump jsoup to 1.23.2 and tighten DefaultFieldTemplateSpec assertions
    omit bba0e9c753 Merge pull request #15995 from apache/fix/plugin-dependency-diagnostics
    omit 3b3464ef8b Capture plugin dependency diagnostics through logback and report pending versions
    omit 0a4ec6f2bb Merge remote-tracking branch 'upstream/8.0.x' into review-15995
    omit 30fa9ee3f2 Merge remote-tracking branch 'upstream/8.0.x' into pr-15965
    omit b49a48e2ec Merge pull request #15828 from apache/perf/vthread-static-compile-8.0.x
    omit 1cce6632ac Finish the codec review follow-ups
    omit 63e0b577ca Merge pull request #16063 from borinquenkid/fix/customizable-rollback-tx-attribute-copy
    omit 7c69251c84 fix: honor @NotTransactional opt-out on class-annotated services
    omit 5ab85c3108 Merge remote-tracking branch 'upstream/8.0.x' into pr-16063
    omit 0282babb06 Address codec and virtual-thread performance review feedback
    omit ab2e4f4922 Restore decodeHex Groovy truth compatibility
    omit 543aa9e55b Improve hot path virtual-thread and codec performance
    omit 35494623cd Merge pull request #16153 from apache/chore/jdbc-package-cleanup
    omit d5a28073ca Remove the unreachable OriginCapablePropertyValue and PropertyOrigin
    omit f91a6d3fa7 Close the application contexts opened by the jdbc connection source specs
    omit 78ac99346d Remove blank Javadoc line in DataSourceBuilder class comment
    omit b682cab4fe Annotate remaining nullable overrides in RelaxedConversionService's nested classes
    omit f2fff3f37c Annotate RelaxedNames/RelaxedConversionService overrides to match Spring's @NullMarked contracts
    omit ff22a0e3d8 Clean up IntelliJ inspection findings in RelaxedDataBinder
    omit f8cf9d9205 Clean up IntelliJ inspection findings in DataSourceBuilder
    omit 81500c871c Rename shadowed local variable in DataSourceSettings.toProperties()
    omit 241a7ef388 Fix potential NPE in DataSourceConnectionSource.close() when unwrapping a DelegatingDataSource
    omit 144eec3a5a Add unit test coverage for the jdbc package in grails-datamapping-core
    omit 014a0d414c Merge pull request #16188 from apache/test/datamapping-core-utils-cleanup
    omit 99251f30c1 added specs to package
    omit 7ab5673d56 Merge pull request #16160 from apache/fix/spring7-nested-map-conversion
    omit 8aee63808c Bind nested settings entries the resolver cannot address by path
    omit 524a336df1 Merge pull request #16193 from apache/chore/clean-grails-datamapping-async
    omit cb8fc6b371 Add test coverage for AsyncEntity.getAsync()
    omit 0a412d76f4 Add test coverage for grails-datamapping-async and type decorator closures
    omit 4451faf7f4 Merge pull request #16031 from apache/fix/flaky-per-test-recording-spec
    omit d33598371c Address review feedback: fix restart failure handling, driver leak, and test hermeticity
    omit 28a91dfead Add unit coverage for WebDriverContainerHolder and ground the recording size floor in real measurements
    omit c9b3be3d96 Fix the real causes behind PerTestRecordingSpec's flakiness
    omit a2211e9ceb Fix flaky PerTestRecordingSpec by waiting for recordings to stabilize
    omit 043aee944f Merge pull request #16389 from apache/test/gorm-ast-transform-coverage-8.0.x
    omit 4131ce905e Backport GORM AST transform test coverage and crash fixes to 8.0.x
    omit bbb476a7e2 Merge pull request #16202 from apache/refactor/graphql-entity
    omit d72aae4f8d Register custom operation data fetchers via the code registry
    omit 2308fc63b0 Remove @CompileDynamic escape hatch from GraphQLMapping.methodMissing
    omit 53a30e3608 Replace deprecated GraphQLArgument/GraphQLInputObjectField defaultValue calls
    omit 149fe635ad Consolidate PersistentGraphQLProperty.getGraphQLType entity/embedded resolution
    omit 5ae100f31a Consolidate PersistentGraphQLProperty's order resolution to a single assignment
    omit 3192a45320 Restore null-safe getMergedField handling and cover ClosureDataFetcher.buildFetchOptions
    omit 0c5defafdf Parameterize raw Association/ToOne/Selection usages in EntityFetchOptions
    omit ee104d2a8c Clean up EntityFetchOptions.java and add its first direct test coverage
    omit df7efef273 Add missing test coverage to grails-data-graphql and remove dead disabled spec
    omit e38e562ec0 Merge pull request #16189 from apache/chore/datamapping-core-validation-cleanup
    omit cb7e4a9d89 Add test coverage and clean up grails-datamapping-core validation package
    omit 5619a371c2 Merge pull request #16285 from apache/test/grails-data-mongodb-specs
    omit 0e55d5513b Add targeted unit coverage for remaining core module gaps
    omit fae8323e92 Add targeted unit coverage for GormSharedSessionMongoTransactionManager
    omit 1367d7e450 Add unit coverage for the embedded module's backend classes
    omit 10eca7c29d Add unit coverage for the bson json parser package
    omit 3077fb7db4 Add unit coverage for CodecCustomTypeMarshaller and CodecExtensions
    omit 65fb5b578b Add unit coverage for the bson codecs.encoders package
    omit 4ab5ee89c0 Add unit coverage for the bson codecs.decoders package
    omit 82003817dd Add unit coverage for the simple bson Codec classes
    omit 9840b9c074 Add unit coverage for MongoExtensions
    omit a25b343435 Add unit coverage for MongodbGrailsPlugin
    omit 7edff9cb78 Compare configuration metadata paths as the build reports them
    omit ad97cc0f95 Merge pull request #16369 from codeconsole/fix/qualified-session-connection-scope
    omit 81b5b189df Keep the closeable contract on a MongoConnectionSource
    omit d82c24e611 Say what a plain @Transactional inside a connection block covers
    omit 96e0e72f68 Merge pull request #16384 from apache/fixEndToEndForStaged
    omit c1121ec22f Make end to end tests worked with our staged artifacts
    omit 0f97ac5682 Merge pull request #16377 from codeconsole/fix/gsp-page-scope-variable-scan-8.0.x
    omit 4dca87c8ad Merge pull request #16379 from apache/fix/error-gsp-jakarta-servlet-attribute
    omit 9ac001f1bc Drop the toString left over from the CharSequence signature
    omit 2a99acb013 Hold the long page to strict so a missed name fails it
    omit b83626345d End expressions and attribute values where the page compiler ends them
    omit e1ec2629bd fix: use jakarta.servlet.error.exception in generated error.gsp
    omit cc92b915d2 Find the names a page introduces in one pass, not a regular expression
    omit 44d95a6427 Cover the annotation on MongoDB and Neo4j, and say what mapped means there
    omit 1103ddd72c Pin the scope cases the assertions only named
    omit 9265c8e1b5 Bind the tenant without opening a session that goes unused
    omit dd92b4502f Leave an enclosing block alone in the default datastore's transactions
    omit d4aa4effe0 bump publish plugin to 1.0.0-RC1
    omit 62c7b4a139 Leave a multi-tenant class to its tenant inside a connection's transaction
    omit 65b6851931 Say which connection sources a restore leaves holding a closed client
    omit c82dd69b25 Keep a class out of a connection block that does not name it
    omit 07f68726a4 Bind the tenant a new session is opened for
    omit fdd67c9244 Let GORM own the client the Boot auto-configuration builds
    omit 12497cfb51 Let recreateOnConflict resolve a taken index name
    omit 077f33c2c9 State the defaults an IDE shows for grails.mongodb settings correctly
    omit 190ac9c388 Route the calls inside @Transactional(connection = ...) to that connection
    omit 848d29e0ce Merge pull request #16375 from matrei/fix/scaffolding-favicon-session-8.0.x
    omit 1cdc252c05 Trim the favicon comments to the one fact the code does not say
    omit de903ae36a Merge pull request #16376 from apache/fix/docs-out-of-gradle-daemon
    omit 437fef8b77 test: declare the scaffolding example's beans through the beans DSL
    omit dfede9d49d build: address second review round on the documentation fork
    omit a054c7aadb forge: keep the browser's favicon fetch out of the starter security feature's login flow
    omit 725d807fee build: address PR review of the documentation fork
    omit 9e0312eb15 Merge branch 'fix/mongodb-crac-named-connections-16366' into fix/qualified-session-connection-scope
    omit 2d8770e5cd Say when the old routing wrote silently, and where the new one stops
    omit 5e5b35a599 Say where the withConnection routing stops, and quote the Neo4j errors
    omit b34471f68c Resolve a connection scope exactly as naming the connection does
    omit 113a75420c build: measure the 3G daemon against the whole macOS job, tests included
    omit bb372c3603 Merge pull request #16370 from apache/deps/groovy-5.1.3
    omit eb0b0bcf76 build: record the measured basis for the 3G daemon heap
    omit 5d347efc38 build: address review of the documentation fork
    omit 93f00bbed6 build: run groovydoc and the user guide outside the Gradle daemon
    omit 73e7a31bf7 Merge pull request #16373 from apache/fix/mongodb-map-criterion-values-8.0.x
    omit 3af01dc69c Merge pull request #16372 from apache/merge/7.2.x-into-8.0.x
    omit 8168649123 test: keep the browser's favicon fetch out of the scaffolding example's login flow
    omit 571ca77ad5 fix: validate Map criterion values in GORM for MongoDB queries
    omit 7e2ca67f1c Merge branch '7.2.x' into 8.0.x
    omit 890451a252 fix(deps): update Groovy to 5.1.3
    omit 076ff09324 Route the class's own GORM calls to the connection a qualified session or transaction opens
    omit 8056ea18db Document Neo4j named connections starting and routing their writes
    omit 41965f37f5 Route the class's own Neo4j calls to the connection withConnection names
    omit 0f3025d536 Keep the connection of a Neo4j API reached through a named connection
    omit 340b0a1462 Let a Neo4j datastore start with a connection under grails.neo4j.connections
    omit fd02c14795 Route the class's own GORM calls to the connection withConnection names
    omit 7893ed4d7e Close and replace every MongoDB client across a CRaC checkpoint
    omit 1fadd5c812 Merge pull request #16208 from codeconsole/feature/mongodb-skip-index-build-8.0.x
    omit 91a7eb489b Announce a background index build from its own thread and document every summary form
    omit 7d927e10be Let an application build its indexes on demand with buildIndexes off
    omit c6a64e8d1e Keep the index build's breakdown, errors and restarts honest per connection
    omit 0ffc9215e7 Say which connection details a supplied client leaves out
    omit d8adb08fcf Tighten the index build's lifecycle, reporting and per-collection listing
    omit 0a12094fa4 Put the logback note beside the dependency rather than in an empty closure
    omit 9a88f6ecd1 Compare index key patterns in order
    omit 5cafdb298e Describe the two index-build settings in the plugin's configuration metadata
    omit abc944e654 Merge remote-tracking branch 'upstream/8.0.x' into feature/mongodb-skip-index-build-8.0.x
    omit 6fe37380ea Stop SchemaBasedMultiTenancySpec dropping MongoDB's config database
    omit 1e68a548e2 Merge pull request #16365 from apache/merge/7.1.x-into-7.2.x
    omit 8c3851b9e4 Merge pull request #16361 from apache/deps/dependency-updates-2026-09
    omit 848282548a Report, interrupt and resume the index build through its whole lifecycle
    omit e1722078aa fix(forge): remove JavadocStyle check removed in Checkstyle 13.11.0
    omit fd13f1a3d6 Read captured log events through a copy-on-write list
    omit f4bb9466e6 Hold the per-connection children in a ConcurrentHashMap
    omit 497ec8d588 Merge pull request #16344 from apache/feat/gorm-lock-latest
    omit 4c074122eb Pin the tenant resolver a supplied client ends up with
    omit 8a7e1ff4c4 Keep the mapping context's database when the client is supplied
    omit 4a4733ac09 Read a compound index's attributes without consuming the declaration
    omit 423ac93345 Pin the camel case setting names against a Spring Boot environment
    omit e8760c70b2 Merge branch '7.1.x' into merge/7.1.x-into-7.2.x
    omit 359c461b7b Merge remote-tracking branch 'origin/7.0.x' into merge/7.0.x-into-7.1.x
    omit d0f685a801 Merge pull request #16362 from apache/fix/mongodb-map-criterion-values
    omit ec532699ab Merge pull request #16363 from apache/deps/revert-starter-sitemesh-3.2.2
    omit 3ac24ed4b0 Revert spring-boot-starter-sitemesh to 3.2.2
    omit d1f4dd8597 fix: validate Map criterion values in GORM for MongoDB queries
    omit 3bcb6f708e Merge pull request #16358 from apache/deps/7.0.17-dependency-updates
    omit 2c201cbc09 Merge pull request #16360 from apache/fix/servlet-compile-only-api-extension-modules
    omit f473f06c02 Merge pull request #16357 from matrei/fix/16354-mongo-tck-fd-churn
    omit df139ec008 fix(deps): update dependencies on 8.0.x
    omit 5ce12a7a99 test: cover named-connection instance operations on MongoDB
    omit 4df44b5690 Declare the servlet API compileOnlyApi in grails-web-core and grails-mimetypes
    omit cd4b5bcddc Merge pull request #16047 from apache/feature/automated-configuration-metadata
    omit e11f509f06 Log when the MongoDB TCK cleanup falls back to dropping a collection
    omit 3a69be3076 Merge pull request #16359 from apache/docs/16029-resources-groovy-configuration-classes
    omit 858a92a9ae Merge remote-tracking branch 'origin/8.0.x' into feature/automated-configuration-metadata
    omit b89f84305b Merge pull request #16048 from apache/feature/groovy-dsl-configuration-metadata
    omit 0728b2fd11 Merge pull request #16356 from codeconsole/fix/converters-servlet-compile-only-api-8.0.x
    omit a6bbcfb8df Merge pull request #16214 from codeconsole/fix/readonly-no-flush-8.0.x
    omit 467f3901b0 Cover the drop fallback of the MongoDB TCK cleanup with a view
    omit b073fd84c1 docs: note that @Configuration classes in resources.groovy are no longer processed
    omit a6f7b5c505 test: pin where an entity mapped to one named datasource saves
    omit 3912c7f65b Update dependencies for 7.0.17
    omit 41531b7576 Declare docker-java-api as a test dependency
    omit d2ac1ae966 Stop the MongoDB TCK manager from recreating every collection per feature
    omit 734602c858 Merge feature/automated-configuration-metadata to pick up the review fixes
    omit 4d49894f05 Address Groovy DSL configuration metadata review findings
    omit a9eca11fc9 Address configuration metadata review findings
    omit 4ebb343fce Document everything an externally-supplied client now picks up
    omit 4710351bbe Point the documented logger category at the MongoDatastore logger
    omit 5e3403efe5 Close the connection source children over a snapshot
    omit 63776a4f42 Merge remote-tracking branch 'upstream/8.0.x' into feature/mongodb-skip-index-build-8.0.x
    omit 92a83c7a0a Merge branch '8.0.x' into fix/readonly-no-flush-8.0.x
    omit 3f34cb1576 Merge remote-tracking branch 'origin/fix/readonly-no-flush-8.0.x' into fix/readonly-no-flush-8.0.x
    omit 6a4e0447f4 Trim the servlet-api comment to the constraint
    omit 1c85f8bd18 Expose the servlet API on grails-converters' compile classpath
    omit 80f5aa243d Warn when a read-only transaction commits over pending operations
    omit 3dc36325dc Merge pull request #16352 from apache/fix/web-plugin-daemon-reuse-16347
    omit fc10302f80 Merge pull request #16040 from gsartori/use-spring-upload-config
    omit f191f248e1 feedback: document the derived sequence name and cover the target-table path
    omit c4b22d54a0 feedback: require a transaction whenever a lock type is named, and declare the supported named arguments
    omit e635ada746 fix: supply the target table so an implicit sequence name resolves on Hibernate 7
    omit 71737d457c Deprecate the legacy multipart configuration guard for removal in 9.0
    omit 531a01e80b Merge branch '8.0.x' into fix/readonly-no-flush-8.0.x
    omit 95c0d27d66 Say that read-only transactions do not flush on any datastore
    omit 784c7691bd Merge branch '8.0.x' into use-spring-upload-config
    omit cde2e1007d feature: reload under the lock in mutex, and route named-connection instance operations
    omit ddd5f0e38a docs: describe what lock() without a transaction actually does on Hibernate 5
    omit 14ca557844 feedback: correct the transaction and named-connection claims, and pin the flush-time cascade
    omit 2c4b8219f1 feedback: lock the row before reloading it on every path, and apply the tenant filter to lock(id)
    omit 1ceec3a898 Merge remote-tracking branch 'upstream/8.0.x' into feat/gorm-lock-latest
    omit 5ba25f4c84 feedback: lock the row on every dialect, cover the merge path, and document both
    omit 1ae4a4a9d8 Tighten Groovy DSL configuration metadata discovery
    omit 356ac22f7c Merge feature/automated-configuration-metadata to pick up the metadata fixes
    omit 6ac4136c66 feedback: keep the persist-on-flush cascade action, document the new events, restore the lock(Map) guard
    omit c4f3fee64f feedback: reset dirty state on refresh-cascaded collection elements on Hibernate 5
    omit ab537bc5dd feedback: address PR #16344 review findings and fix issue #16349 dirty-checking bug
    omit 50207a3722 Harden configuration metadata generation
    omit 9fdcb77bf4 Merge pull request #16230 from codeconsole/feature/modernize-grails-async-8.0.x
    omit b160cc36aa Merge branch '8.0.x' into feature/automated-configuration-metadata
    omit bb248db25f Document the Gradle 9.7 requirement of Grails 8
    omit 0ac295582d Call the asset classpath configuration statically
    omit f3624cb8c3 Document unified virtual-thread execution and promise failure contracts
    omit b698b3f540 Resolve asynchronous request timeouts as HTTP 503
    omit 683342d225 Propagate web context across owned executors and chained promises
    omit 69b234e3a5 Unify virtual-thread promises and preserve checked task failures
    omit b09d755655 Merge upstream/8.0.x and retain both sets of upgrade notes
    omit ba8a179899 feedback: bind the unproxied target when locking a union-mapped row on Hibernate 7
    omit cbad317a13 Link straight to the read-only transactions section
    omit d60b7a74fc test: point the union-subclass version comment at the insert-then-update issue
    omit 2842f51fe0 feedback: lock the concrete row for table-per-concrete-class hierarchies on Hibernate 7
    omit d2f76c9e3b feedback: lock the hierarchy root row before refreshing on Hibernate 7
    omit 1b82764ed6 Merge branch '8.0.x' into use-spring-upload-config
    omit cde6de11a8 Document that read-only transactions no longer flush on MongoDB
    omit 2bdbe36a68 Cover SessionOnlyTransaction in the module it lives in
    omit b5737b6571 Show the queued write is dropped, not left where it was
    omit 927a2226d0 Accept a null definition when a Mongo session begins a transaction
    omit 3d4f0d3fe0 Document AUTO as the default flush mode, which is what sessions start with
    omit 7a1cea3865 Cover a read-only transaction on the Spring Data interop
    omit e3e7755455 Retire the transaction constructors from before the read-only flag
    omit d2970174f2 Give read-only transactions the same meaning on Mongo as on Hibernate
    omit 4198a9cb84 feedback: lock the row before refreshing on Hibernate 7, follow component cascades on Hibernate 5
    omit e749cc79a9 Merge pull request #16184 from codeconsole/fix/gsp-spring-boot-standalone-8.0.x
    omit b65a64ed69 Merge upstream/8.0.x into feature/modernize-grails-async-8.0.x
    omit a29efe7561 Document async executor migration and deprecated Servlet APIs
    omit f7da7dee19 Preserve standalone web context and unify async request lifecycle
    omit b8796c25fd Resolve the named application executor and enable fallback concurrency
    omit c8c9a0b1b2 Share the promise executor with the default event bus
    omit f269620071 Preserve promise failures and consistent Future exception semantics
    omit fac89c965e Merge pull request #16322 from codeconsole/fix/scaffold-count-type-8.0.x
    omit ee8c4c2db8 Drop the redundant groovy.lang import from GspCompileStaticSpec
    omit b40c318616 Document the asset pipeline's tags in a Spring Boot application
    omit 490f5e1e3f Link the example's assets through the asset pipeline's tags
    omit e07a60eee3 Take asset pipeline 5.2.0-RC1
    omit 762cffe848 Accept a model value whose conversion converts back to it
    omit bb0ee3c611 Merge pull request #15960 from apache/feat/virtual-thread-promise-factory-seed
    omit fc0d3057af Merge pull request #16292 from codeconsole/feat/beans-dsl-diagnostics-8.0.x
    omit 293fb7768c feedback: address locking issues and add support for lockmodetype
    omit 7a31802892 Merge branch '8.0.x' into fix/scaffold-count-type-8.0.x
    omit 736ba9d456 Merge branch '8.0.x' into feat/beans-dsl-diagnostics-8.0.x
    omit 59d9023543 Merge branch '8.0.x' into fix/gsp-spring-boot-standalone-8.0.x
    omit 37f8ca6377 Merge pull request #16338 from codeconsole/fix/embedded-mongo-shutdown-hang-8.0.x
    omit 35220cb31f Merge branch '8.0.x' into fix/embedded-mongo-shutdown-hang-8.0.x
    omit 211ef8de17 Fix MongoDB CI logging assertions and activate failOnError test
    omit 0bf4554fcc feedback on method naming
    omit 1726f84d3a Fix MongoDB index build lifecycle and review findings
    omit b4aa3c6622 Address embedded MongoDB shutdown review findings
    omit bf09ab4b6c Clarify standalone GSP lifecycle guidance and simplify view resolver
    omit 43d46cb4eb Match nested anonymous-class reach to Groovy method annotations
    omit fc1941a96e Preserve exact floating-point values when binding GSP models
    omit 61f8b7c28a feature: ability to lock and not fail on optimisitic locking
    omit b449d532af Merge pull request #16297 from codeconsole/feat/mongo-objectid-default-8.0.x
    omit f3cb91ebbe Merge branch '8.0.x' into feat/mongo-objectid-default-8.0.x
    omit ee362fa1f8 Merge branch '8.0.x' into feature/mongodb-skip-index-build-8.0.x
    omit 2033f0eaf7 Merge remote-tracking branch 'upstream/8.0.x' into fix/gsp-spring-boot-standalone-8.0.x
    omit 87d38b3753 Cover hasOne updateAll rejection on the non-codec engine
    omit 983fd08c9d Cover many-to-many updateAll on the codec engine
    omit 7d302c578b Name the plain to-many null case accurately, and cover the DBRef null drop
    omit a173953336 Document updateAll and the association kinds it supports
    omit 55ee2e3356 Accept an identifier in place of an association instance in updateAll
    omit 44750eb96b Drop a dead type check in the updateAll bidirectional one-to-many guard
    omit b1aa8ca653 Merge branch '8.0.x' into feat/beans-dsl-diagnostics-8.0.x
    omit 38f32adee7 Merge branch '8.0.x' into fix/embedded-mongo-shutdown-hang-8.0.x
    omit 22163f7f11 Merge branch '8.0.x' into fix/scaffold-count-type-8.0.x
    omit 054112214a Correct the model names in the scaffolding guide
    omit 07afd38db0 Test the welcome page and the scaffolded count declaration
    omit 0a93f8dab3 Convert typed model values the way a Groovy assignment does
    omit 3067d0a855 Merge pull request #16282 from codeconsole/fix/dirty-checking-collection-tracking-8.0.x
    omit c011bdf53c Merge branch '8.0.x' into fix/dirty-checking-collection-tracking-8.0.x
    omit 8c32742172 Merge pull request #16323 from codeconsole/feat/gorm-count-returns-long-8.0.x
    omit df000a42e1 Merge branch '8.0.x' of https://github.com/apache/grails-core into feat/gorm-count-returns-long-8.0.x
    omit 18f5b07f62 Merge pull request #16327 from codeconsole/test/compiler-script-producer-wiring
    omit 5f11919ad4 Let Spring Boot's error page render in a standalone application
    omit fbfe7a176a Treat the body a nested anonymous class sits in as a ceiling
    omit 76bfb3bd08 Show a tag library the guide page's example can compile
    omit ec9a9c4928 Stop specifying unencoded output for an unwired layout tag library
    omit 0327078ca1 Leave Spring's auto-proxy creator list as the specification found it
    omit c8756534f2 Decide the static-compilation mode per body, not per class
    omit 40fe646ca6 Regroup the spec imports and assert the subclass case is flagged
    omit 7dbf7e1bdf Run grails-redis's own tests in the Redis jobs
    omit 42521c0b24 Correct why EmbeddedMongoInitializerSpec stops its own servers
    omit b378d75445 Leave the Hibernate and Redis suites out of the Neo4j jobs
    omit 9051523827 Time out the test jobs well before GitHub's six-hour default
    omit 2c7455a551 Leave the MongoDB suites out of the Neo4j jobs
    omit be9fd0e31c Stop the servers the replica set specification starts
    omit dcfa7bed0e Stop an in-memory embedded MongoDB only once
    omit bc0b7950e6 Pin the exact-class rule for the datastore to-many collections
    omit 534956d3f5 Drop the DirtyCheckingMap import left behind by the wrap(Map) change
    omit 16eb980bb8 Document running GSP in a Spring Boot application
    omit 6ca3141d55 Hold the example's selected rendering in the session
    omit 3d23083278 Alias jspViewResolver only where nothing is registered under it
    omit 2dade74084 Drop the redundant iterator() overrides on the wrapper subclasses
    omit a7f7edb0d6 Stop nesting a new DirtyCheckingMap on every save
    omit 3ceb572b79 Cover the precompiled view path where it is contributed
    omit 7dc87ac976 Make three specifications fail when what they cover is reverted
    omit 3ac93a3aa9 Encode the attributes of a captured tag in a standalone application
    omit f799282454 Keep wrapper equals reflexive when the target has identity equality
    omit 0ae70cef89 Re-wrap a to-many association replaced by a plain collection
    omit a46b6f31c4 Cover ad-hoc compiler script provider wiring
    omit c8f5c8f9d4 Fix the count documentation left behind by the Long change
    omit 463767abd0 Merge origin/test/compiler-script-producer-wiring into test/compiler-script-producer-wiring
    omit 00b11de5ff Merge upstream/8.0.x into fix/gsp-spring-boot-standalone-8.0.x
    omit 120a907dc9 Merge upstream/8.0.x into feat/gorm-count-returns-long-8.0.x
    omit 8dd2b0a1dd Merge upstream/8.0.x into feature/modernize-grails-async-8.0.x
    omit 377d709034 Merge upstream/8.0.x into test/compiler-script-producer-wiring
    omit 74f7951df6 Read the receiver, and read what @CompileStatic was given
    omit a5758d657f Merge pull request #16003 from apache/test/databinding-codegen-contract
    omit 29514bb3bb Merge branch '8.0.x' into test/databinding-codegen-contract
    omit b762fe3eaf Merge pull request #16320 from jamesfredley/refactor/remove-grails-micronaut
    omit f155a75ca8 Merge pull request #16331 from apache/fix/xml-parser-hardening
    omit d5c7bdf097 Widen the reachable set to what the runtime actually answers
    omit 99a4604dbc test XML.parse refuses a declared DOCTYPE through every overload
    omit dafdf8acdc Merge remote-tracking branch 'upstream/8.0.x' into fix/xml-parser-hardening
    omit 890833e9c4 strictly parse plugin config always
    omit c35e0bb5ea Merge pull request #16333 from apache/fix/dynamic-finder-sort-validation
    omit e59ca12fbd Merge branch '8.0.x' of https://github.com/apache/grails-core into feat/gorm-count-returns-long-8.0.x
    omit 8f497f5ad3 Carry Long through the JSON API pagination and pin it in the specs
    omit 6cfdb523d9 Cover an ad-hoc outputs.file producer and point the guide at the validation error
    omit 98844a007c Merge remote-tracking branch 'upstream/8.0.x' into pr-16327
    omit e10b69c4be feedback: Parse XML by trust level: strict for request bodies, DOCTYPE-tolerant for classpath descriptors
    omit 6247e8d5a6 Merge remote-tracking branch 'upstream/8.0.x' into fix/xml-parser-hardening
    omit a7647b2731 Merge branch '8.0.x' into fix/dynamic-finder-sort-validation
    omit 9cd088f435 feedback: Validate sort arguments on every query entry point
    omit e9cd00567b Merge pull request #16332 from apache/fix/interceptor-canonical-path
    omit f11e85549b Re-bind a collection borrowed from another entity to the entity it is assigned to
    omit a2ac5178cf Track the SequencedCollection methods and the live collection views
    omit 0c25aefef2 Stop the reach check at closures, and let both field spellings agree
    omit 15542cbcf4 Say what covers the empty URL mappings holder
    omit a3d4d86000 Compile from the webjars without packaging them
    omit c4546d243d Make the reach check follow the lift exactly
    omit 561532823a Repair an anonymous class in a closure parameter default too
    omit 8707742a8c Match the encoders' null and many-to-many representation in updateAll
    omit b1c52c27f4 Reject hasOne associations in updateAll
    omit b952b270fa Reach: one rule for both host kinds, and the runtime's own resolution
    omit 9528ba1ab7 Write many-to-many updateAll values under the key the non-codec engine reads
    omit 0dfbe067a8 Reject bidirectional one-to-many in updateAll
    omit 7deb7dccbb Restrict updateAll collection normalization to real reference collections
    omit 4fe4570976 Catch every spelling of a reference the anonymous class cannot reach
    omit dc6a9cf5c9 Merge remote-tracking branch 'upstream/8.0.x' into feat/mongo-objectid-default-8.0.x
    omit 55fa4619dd Set the enclosing method on nested-closure anonymous classes too
    omit e6420b9359 Leave URL mappings and constraint validation off the example's class path
    omit 48175cf3fd Serve the example's assets through the asset pipeline's Spring Boot module
    omit a2dc9c6c84 Merge upstream 8.0.x into fix/gsp-spring-boot-standalone-8.0.x
    omit 3ba7fb58d2 Delegate wrapper equals/hashCode to the target collection
    omit ea9c585bf4 Retain compiler script regression fixture and test build cache restoration
    omit af45fc2fb3 Fix the duplicate section number in the 8.0 upgrade notes
    omit 9795e8df77 Merge upstream 8.0.x and preserve both upgrade guide additions
    omit 2d7fdf019a Preserve plain-file compiler script producer dependencies
    omit 04f871cb3d Address review feedback on the count() change
    omit 4b2ab655cf Correct the rationale for the count width in the upgrade note
    omit 47f070721e Return Long from the GraphQL count field too
    omit 38f371c0dd Return Long from count() instead of narrowing to Integer
    omit 42e951fc1c Merge branch '8.0.x' into fix/dynamic-finder-sort-validation
    omit d88d15ea15 Merge branch '8.0.x' into fix/xml-parser-hardening
    omit e0bba892e7 Merge branch '8.0.x' into fix/interceptor-canonical-path
    omit 635f284d55 Count a property-style read as a use of the moved accessor
    omit 191830ee33 Run the anonymous-class reach check for a group too
    omit 67d20dc774 Give a lifted anonymous class an enclosing method
    omit d164af8fb8 Merge remote-tracking branch 'origin/fix/dirty-checking-collection-tracking-8.0.x' into fix/dirty-checking-collection-tracking-8.0.x
    omit 8581d5604f Address review: exact-class rewrap gate, Map wrapper coverage, SortedSet, docs
    omit 06cb68299f Merge remote-tracking branch 'upstream/8.0.x' into fix/dirty-checking-collection-tracking-8.0.x
    omit da7dad3462 Merge branch '8.0.x' into fix/dirty-checking-collection-tracking-8.0.x
    omit 4c015010be Merge branch '8.0.x' into feat/beans-dsl-diagnostics-8.0.x
    omit 91885f07ed fix: trim and validate DynamicFinder order direction
    omit 0980623481 Merge pull request #16296 from apache/fix/16294-16295-non-public-bean-marshalling
    omit 6884e173a1 Merge pull request #16316 from apache/test/restore-transaction-service-specs-8.0.x
    omit a1bd43ddfc ci: give Validate Actions 10 minutes for a cold Gradle run
    omit 0ff4b76646 Merge pull request #16299 from apache/fix/16287-devtools-gorm-entities
    omit 1917fefdd2 Merge pull request #16324 from jdaugherty/fix/16287-devtools-review
    omit 90ef7ea96c Merge remote-tracking branch 'origin/8.0.x' into refactor/remove-grails-micronaut
    omit d9a215b549 Merge branch '8.0.x' into feat/mongo-objectid-default-8.0.x
    omit 60598510cf Resolve read methods through any public type, and fix two vacuous tests
    omit 9b266f47df Merge branch '8.0.x' into feat/beans-dsl-diagnostics-8.0.x
    omit 43510784cf Merge pull request #16149 from codeconsole/perf/request-path-8.0.x
    omit 82b8648a6d Merge branch '8.0.x' into perf/request-path-8.0.x
    omit 60515a5ec8 Merge pull request #16325 from apache/test/compiler-config-runtime-classpath-producer
    omit cda191c312 Merge branch '8.0.x' into perf/request-path-8.0.x
    omit 5fa7a5e120 revert: keep GrailsWebRequest.getCurrentRequest() undeprecated
    omit 3973ca341a Test and document generated compiler script producer wiring
    omit 2a98407463 Merge branch '8.0.x' into feat/mongo-objectid-default-8.0.x
    omit 2324ebc7af Merge branch '8.0.x' into feature/mongodb-skip-index-build-8.0.x
    omit 688436e00c Note the sitemesh.decorator.default fallback in the upgrade guide
    omit 99cf46fb57 Document the @SpringBootTest case in a Grails application
    omit 3af263cb69 Gate the core auto-configuration, not two of its beans
    omit 1ca0145550 Keep a Grails build's test task off compileGroovyPages
    omit d9c95450a5 Give an application that maps no URLs an empty mappings holder
    omit 3c8fe2eac2 Look tag library artefacts up by TagLibArtefactHandler.TYPE
    omit da4ede1850 Merge remote-tracking branch 'upstream/8.0.x' into fix/gsp-spring-boot-standalone-8.0.x
    omit 666308814e Reject an anonymous class reaching a member that moved to the sibling
    omit e9932f371f Share the non-public bean access, and report it once
    omit 902f0820cd Fix three defects the new forms introduced, and pin what was missing
    omit 9cde802ef7 test: pin that the compiler config generator stays off the runtime classpath
    omit a488d6a1eb Merge branch '8.0.x' into feat/beans-dsl-diagnostics-8.0.x
    omit 29abfeedd6 Resolve the DevTools restart loader through the parent chain
    omit a137709366 Merge remote-tracking branch 'upstream/8.0.x' into fix/16287-devtools-gorm-entities
    omit e8d33a9318 Merge pull request #16309 from apache/matrei-patch-1
    omit 5c1f79d16c Narrow the context-path interceptor note to the affected matcher shape
    omit 6bbb71ecbe Resolve security matcher paths exactly as dispatch does
    omit 79970c5169 Canonicalize interceptor and security matcher paths once
    omit 035f9197fa Address review feedback on sort argument validation
    omit 2e08c1fc15 Widen a private method copy instead of the cached descriptor
    omit e6920c663d Cover dynamically compiled Groovy beans in the marshaller tests
    omit 11ff749b5f Fix marshalling of non-public classes and Serializable beans
    omit 1756eaedc5 Correct contradictory wording about the engine setting
    omit 463e1e78ae Encode collection associations in updateAll
    omit 564b61ba99 Coerce unidirectional collection and many-to-many references in the non-codec engine
    omit ded71167c4 Exclude embedded associations from updateAll id normalization
    omit 1630a25cce Extract association ids from proxies in updateAll
    omit eaeff04ce4 Merge branch '8.0.x' into feat/mongo-objectid-default-8.0.x
    omit 8855b88340 Declare the scaffolded count model field as Number
    omit 140f173f80 Simplify the welcome page sort closures
    omit b4f9b0dc48 Import MimeType in the welcome page instead of qualifying the cast
    omit 12fe286b65 Merge branch '8.0.x' into fix/scaffold-count-type-8.0.x
    omit 7801ced1d8 Merge pull request #16321 from apache/groovy-5.1.2
    omit 8fa9782a70 Fix welcome page failing to compile under GSP static compilation
    omit 97fc996460 Fix scaffolded index.gsp declaring the count model field as Integer
    omit cf6880565a Document the new DSL surface in the user guide
    omit f7d22cebd0 Fall back rather than throw when Grails cannot answer
    omit 89b3890662 chore: clear the residue review found in the request path branch
    omit c8bbcb89b0 test: cover the forward cases the request path spec left unexercised
    omit f4172be4bd fix(deps): update Groovy to 5.1.2
    omit 9a5bc99620 Merge branch '8.0.x' into perf/request-path-8.0.x
    omit c4cadbba59 Stop asserting an ordering @ConditionalOnBean does not guarantee
    omit 86600e67f9 refactor: move Grails Micronaut to apache/grails-micronaut
    omit fcac2072e0 Merge branch '8.0.x' into feature/mongodb-skip-index-build-8.0.x
    omit e45b3a2161 Merge branch '8.0.x' into feat/beans-dsl-diagnostics-8.0.x
    omit a9a1f1eebc Merge branch '8.0.x' into feat/mongo-objectid-default-8.0.x
    omit 41259bf005 Merge pull request #16178 from apache/fix/disable-groovy-indy-build
    omit 6fce5e1b46 Merge branch '8.0.x' into fix/disable-groovy-indy-build
    omit 17b9ded93b Merge pull request #16167 from apache/build/ci-daemon-heap-vs-runner-ram
    omit 1085bed7f3 Merge branch '8.0.x' into feat/beans-dsl-diagnostics-8.0.x
    omit 2cf25ea829 Merge branch '8.0.x' into feature/mongodb-skip-index-build-8.0.x
    omit b1d19ef28c Merge branch '8.0.x' into feat/mongo-objectid-default-8.0.x
    omit 425cdc0cbd Deprecate the non-codec persistence engine
    omit 854938f029 fix: include runtime jars on groovydoc classpath
    omit ce89107fb1 Encode to-one associations in the non-codec engine's updateAll, and drop the engine scoping
    omit 60c3671c95 Write association references through the id mapping in the non-codec engine
    omit 3a99093037 Store and query _id through the id mapping in the non-codec engine
    omit 4563be76b6 Normalise updateAll association values into a copy of the caller's map
    omit 41b92309a4 Apply the ObjectId default to the codec engine only
    omit e2d55173de Merge branch '8.0.x' into build/ci-daemon-heap-vs-runner-ram
    omit 90ac62dd28 Merge branch '8.0.x' into feature/automated-configuration-metadata
    omit 03e6eef178 Merge branch '8.0.x' into fix/16287-devtools-gorm-entities
    omit a92638515e Merge branch '8.0.x' into test/databinding-codegen-contract
    omit b34c0eeafc Merge branch '8.0.x' into fix/disable-groovy-indy-build
    omit 46a089a8fd test(grails-datamapping-core): restore the transaction service specs lost in the 7.2.x merge
    omit 5670a65bc8 Merge pull request #16315 from apache/ci/asf-approved-pins-8.0.x
    omit e9cf8b1864 ci: pin the remaining actions to ASF-approved SHAs on 8.0.x
    omit def2c9b9bc Merge remote-tracking branch 'origin/7.2.x' into merge/7.2.x-into-8.0.x
    omit 41d366539e Add group(...), the nested conditionally-guarded configuration class
    omit 3c498ebbc1 Take a compile-time String constant as a member name
    omit a2603b0e4e Add .conditionalOnClass(...), the condition optional integrations are gated on
    omit 5075ff30b5 Merge pull request #16314 from apache/merge/7.1.x-into-7.2.x
    omit 473230b732 Merge remote-tracking branch 'origin/7.1.x' into merge/7.1.x-into-7.2.x
    omit 53d9c1eddb Merge pull request #16313 from apache/merge/7.0.x-into-7.1.x
    omit 049fee3917 Merge remote-tracking branch 'origin/7.0.x' into merge/7.0.x-into-7.1.x
    omit 6e32b25e0b Set originType when re-homing an anonymous inner class
    omit 840aea9b91 Share SAX feature identifiers and make DOCTYPE rejection configurable
    omit 7df2280ede Re-home anonymous inner classes in a lifted body
    omit 4959bf493b Let .scope(...) take the annotation's other attributes
    omit e0f99fc54c Add .aliases(...), so a bean can keep an old name
    omit 0a91ed938c Merge into any qualifier-attached annotation, not only @Bean
    omit c8945fd6c3 Wire Hibernate 5 DevTools bootstrap through the dataSource bean
    omit 85b1417780 Order the java.io imports, which checkstyleMain rejects
    omit fb076690bd Give the DSL reference structure, and say a block can be split
    omit 69c5de62d3 Add .conditionalOnExpression(...), for what the others cannot say
    omit b8a8d00af4 Rename .grailsEnv(...) to .conditionalOnGrailsEnv(...)
    omit 507dd2c896 Add .conditionalOnProperty(...), the condition applications actually use
    omit 8f8e86a544 Let every condition qualifier tell same-named beans apart
    omit 1690234814 Derive the set of all qualifier names instead of restating it
    omit 5ea9efe481 Add .conditionalOnBean(...), the positive counterpart
    omit 4a572c7d3f Document the one-expression form for a property-configured bean
    omit 2867e4d3fb Resolve sibling bean calls against hand-written @Bean methods too
    omit 910dc72b1e Dump the generated members to a directory on request
    omit 8f30584175 beans DSL: condition a bean on the Grails environment
    omit 9d685b98e0 beans DSL: reject a post-processor bean that is not staticMethod()
    omit bf31c48118 beans DSL: reach @Bean's own attributes instead of colliding with it
    omit b1c0c425d6 beans DSL: infer type arguments from what the bean constructs
    omit e27cb9bf5b beans DSL: declare a bean as its interface and still construct it
    omit e49a39e932 Merge branch '8.0.x' into feat/beans-dsl-diagnostics-8.0.x
    omit 533f7e2cfb Merge branch '8.0.x' into perf/request-path-8.0.x
    omit 5a08d840dd Merge remote-tracking branch 'origin/feat/beans-dsl-diagnostics-8.0.x' into feat/beans-dsl-diagnostics-8.0.x
    omit 6fbfd28cef Only record an annotation type in visited when descending into it
    omit c2768dd63b Check static sibling bean calls on a proxied host too
    omit 4062b15fcf Merge branch 8.0.x into build/ci-daemon-heap-vs-runner-ram
    omit 6fdc50880a Guard XInclude disable and reject internal DOCTYPE subsets
    omit c431a33afb Merge branch '8.0.x' into feature/mongodb-skip-index-build-8.0.x
    omit 0d5b31673b Validate dynamic finder and HQL list sort property names
    omit f0108c28ed Canonicalize interceptor and security matcher request paths
    omit c76d3b87ea Fix SAX parser feature URIs and reject DOCTYPE declarations
    omit 3b668223da Merge pull request #16308 from apache/ci/asf-approved-action-pins
    omit 08d1902331 Merge branch '8.0.x' into feat/mongo-objectid-default-8.0.x
    omit 0fa6561bf1 Store and query _id consistently in the non-codec engine
    omit ded9ea7900 Coerce association ids in IN criteria
    omit 9a8506d50c Apply id coercion inside negations and other junctions
    omit 19a146a5b3 Encode to-one association ids consistently in updateAll
    omit 5bf4e5c62e Delete documents whose assigned String id is empty
    omit 0f1bc9be87 Correct idGeneration docs that still described String storage as the default
    omit 87219f1530 Add unit tests for id coercion and association storage
    omit d5c9cc149d Include groovydoc in the Groovy Snapshot Canary Build
    omit 9bf5f6623f Add test coverage and fix real bugs in grails-datamapping-core's services package (#16156)
    omit ecb4a4d31e ci: pin every action to an ASF-approved SHA
    omit 55d5076aa5 Merge pull request #16027 from apache/feat/reenable-oracle-testcontainers
    omit 25b7937cff Merge branch '8.0.x' into fix/disable-groovy-indy-build
    omit 1113d60e1d Merge pull request #16302 from apache/fix/16162-fields-memoize-leak
    omit 3edb3f349f test: count the POST member route in the wildcard resources spec
    omit e3c2ff2036 Merge remote-tracking branch 'upstream/8.0.x' into perf/request-path-8.0.x
    omit 05cefde0af Give TemplateLookupCachingSpec its own command fixture
    omit c6cdd02d6c Merge pull request #16305 from jamesfredley/merge/7.2.x-into-8.0.x
    omit bb9780cab2 Merge branch '7.2.x' into 8.0.x
    omit 377a0ee8f8 Merge pull request #16304 from jamesfredley/merge/7.1.x-into-7.2.x
    omit a071dca786 Merge branch '7.1.x' into 7.2.x
    omit 9f8deded04 Merge pull request #16303 from jamesfredley/merge/7.0.x-into-7.1.x
    omit 13bf4405f8 Fix fields template lookup leak from accessor-keyed memoization
    omit cf57bce561 Merge branch '7.0.x' into 7.1.x
    omit 54cd047fa7 Merge pull request #16301 from jamesfredley/feat/forge-aws-slots-next-snapshot-older
    omit 946faaa9b0 docs(forge): stop hardcoding the shared ALB DNS name.
    omit e1850655d2 Add Forge AWS next-snapshot and older slots.
    omit 44ab8dbd31 Narrow DevTools restart docs to when restart is active
    omit 505542f121 build: keep Grails 8 indy-off only in CompilePlugin
    omit c4e794fc6d fix: invoke Map constructors without Class.newInstance under indy-off
    omit 085c0d2886 fix: stop count() log.debug hitting GORM methodMissing
    omit 8dfa3636da build: disable Groovy invokedynamic for the Grails 8 compile
    omit c6e55d9a4b Keep GORM entities on the DevTools restart classloader
    omit 8d1fc7d249 Merge pull request #16110 from apache/ci/remove-docs-publish-serialization
    omit 2ca0e4c7fc Fix checkstyle OperatorWrap violation in MongoQuery
    omit 0e5a368372 Merge remote-tracking branch 'upstream/7.1.x' into 7.2.x
    omit b96887f14a Merge remote-tracking branch 'upstream/7.0.x' into 7.1.x
    omit a39a350296 fix: authorize the method the request will be routed as
    omit 49d7200daa Pin extra typed and def-typed properties in the databinding whitelist spec.
    omit 19157d878a Merge pull request #16273 from codeconsole/feat/wildcard-resources-mapping
    omit a81e0d5ca0 Default String id storage to ObjectId and fix association id coercion
    omit 53ab3a8aff build: declare the benchmark harness at the directory it moved to
    omit 14ae491d59 build: move the benchmark harness under grails-test-examples
    omit 93c8ffd209 build: classify grails-benchmarks with the projects that exercise the framework
    omit 444da64aa5 Merge remote-tracking branch 'origin/perf/request-path-8.0.x' into perf/request-path-8.0.x
    omit a57a164102 Merge remote-tracking branch 'upstream/8.0.x' into perf/request-path-8.0.x
    omit 2550800ff5 Merge pull request #16114 from codeconsole/fix/gradle-97-groovy-config-script
    omit 6f254ca1dd Merge pull request #16293 from apache/fix/16280-map-accessor-collisions
    omit dc214d94e1 Address map entries shadowed by bean accessors on Groovy 5
    omit 51c977e13f Merge branch '8.0.x' into feature/mongodb-skip-index-build-8.0.x
    omit 5684ed158d Merge remote-tracking branch 'origin/fix/gradle-97-groovy-config-script' into fix/gradle-97-groovy-config-script
    omit 818d22b56f Wire every GroovyCompile task, and fail on a missing configurationScript
    omit c427432137 Merge branch '8.0.x' into feat/wildcard-resources-mapping
    omit 708aa2ea02 Merge branch '8.0.x' into fix/dirty-checking-collection-tracking-8.0.x
    omit 392edeba2f Merge remote-tracking branch 'upstream/8.0.x' into fix/gradle-97-groovy-config-script
    omit 97ae226e58 Merge branch '8.0.x' into feat/beans-dsl-diagnostics-8.0.x
    omit 4028b9f8a5 Merge remote-tracking branch 'upstream/8.0.x' into fix/gsp-spring-boot-standalone-8.0.x
    omit 065741bfa7 Merge branch '8.0.x' into perf/request-path-8.0.x
    omit c1b532aef9 M6 FIX: Require a username and password on the spring-boot-starter-security User (#16291)
    omit 3d3f4bbcff Register a generated auto-configuration where it is generated (#16224)
    omit 2f7a097e24 Fix JsonScanner number parsing for bare exponents and -Infinity (#16284)
    omit 683432b279 Fix checkstyle import order and codenarc UnnecessaryGString violations
    omit 6509f29929 Fail a stray beans statement on a plugin descriptor too
    omit a0c90c96c1 Stop the sibling-bean check at a nested closure
    omit 2aabf4b28e Pin annotate's array-valued attributes, which only the docs disclaimed
    omit 4ec20d1b7c Add .typeArguments(...) so a declared type can carry type arguments
    omit dedfe26ce3 Document parameter annotations, and cover the optional-dependency case
    omit 942cce572f Reject a sibling bean call that cannot return the singleton
    omit 76c0cc3c24 Report a partly DSL-shaped beans block instead of dropping it
    omit b4027b9d9a Merge remote-tracking branch 'upstream/8.0.x' into perf/request-path-8.0.x
    omit 250034dc9b refactor: put back the property access in the redirect trait
    omit 9763091e42 test: assert the whole request path in one round trip
    omit 2234fe9cf0 fix: finish the effective-method rule, and let it survive a forward
    omit b0c351b922 Merge pull request #16288 from apache/feat/async-group-8.0.x
    omit c8688ff761 Merge pull request #16283 from apache/post-8.0.0-M6-release
    omit 8bf277b059 Fix async group & add associated feature
    omit 30c1e776d7 Merge pull request #16279 from codeconsole/chore/remove-dead-xml-apis-exclusions-8.0.x
    omit 2ef59e1958 Merge pull request #16005 from apache/fix/groovydoc-links
    omit b873801b55 Cover the index build's failure and degradation paths
    omit a2e62929cb Cover the remaining patch lines flagged by Codecov
    omit e88cb0beb9 Keep collection properties dirty-checked after reassignment; track iterator-based removals
    omit d71c218259 Merge pull request #16221 from codeconsole/feat/beans-dsl-qualified-autoconfiguration-name-8.0.x
    omit 03ef4979fc Merge pull request #16216 from codeconsole/fix/embedded-mongo-backend-reuse-8.0.x
    omit cfb1b1e10e Cover the qualified sibling end to end, not just at the AST level
    omit c2e29e3e94 State that a qualified autoConfigurationName is absolute
    omit cf50292b2d Document the backend as a setting a restart is not handed a stale server for
    omit b3fa838ed3 Merge remote-tracking branch 'origin/feat/beans-dsl-qualified-autoconfiguration-name-8.0.x' into feat/beans-dsl-qualified-autoconfiguration-name-8.0.x
    omit 5ca8537f36 Correct the two remaining "same package" claims about the sibling
    omit 7714cded41 Merge branch '8.0.x' into fix/gradle-97-groovy-config-script
    omit 4646adfa06 docs: fix Groovydoc external-type links and audit unresolvable links by cause
    omit 0e0d5993be fix: give every Grails-level reader the method the request routed as
    omit e7b5218fe5 docs: cut the commentary in the request path back to what it earns
    omit d3bfaa7621 test: pin the callback order of a repeated postHandle
    omit a2ee534496 fix: address review findings on multipart params, internal dispatch and docs
    omit 7689098176 fix: keep g:form emitting _method in both modes
    omit f3a91d3664 Merge pull request #16211 from apache/fix/bump-hibernate7-versions
    omit 6408c369d9 fix(deps): Bump Hibernate 7 to 7.4.7.Final
    omit 15db8fc90d refactor: resolve a mapping token through doCall rather than a call override
    omit 10d7c84632 Merge branch '8.0.x' into feat/beans-dsl-qualified-autoconfiguration-name-8.0.x
    omit d1a3e5c4e5 Merge remote-tracking branch 'origin/feat/wildcard-resources-mapping' into feat/wildcard-resources-mapping
    omit 06a27a837b Cover the namespace form of a wildcard resources mapping
    omit e469c27e11 Remove dead xml-apis dependency exclusions
    omit 423f2bd3ef test: prove the method override by what it routes, not by what request.method says
    omit 4d227fb409 Revert "fix: let an application see a dispatcher-resolved method override"
    omit a00cb81e6e fix: let an application see a dispatcher-resolved method override
    omit d2e1eef261 build(benchmarks): consume GrailsWebMockUtil from the test fixtures
    omit 59eeda19cc docs: renumber this branch's upgrade sections after the 8.0.x merge
    omit 3a4797dda4 Merge remote-tracking branch 'upstream/8.0.x' into perf/request-path-8.0.x
    omit b1cb822960 Merge remote-tracking branch 'origin/feat/hiddenmethod-handler-mapping' into perf/request-path-8.0.x
    omit df63cefae7 Merge remote-tracking branch 'origin/fix/multipart-lean-8.0.x' into perf/request-path-8.0.x
    omit 5f8cc13bc9 Merge remote-tracking branch 'origin/perf/urlmapping-name-resolution-8.0.x' into perf/request-path-8.0.x
    omit 2ce995bb1f Merge remote-tracking branch 'origin/feat/hiddenmethod-handler-mapping' into feat/hiddenmethod-handler-mapping
    omit b7b744f9e4 fix: derive hidden method filter mode from both properties, and fill Boot's gap
    omit 62de237adb fix: let a data binding bean registered after a failed lookup be picked up
    omit 6af0bf5d57 Merge branch '8.0.x' into feat/wildcard-resources-mapping
    omit 4309d5b876 Merge pull request #16274 from codeconsole/fix/codec-metaclass-compile-static-8.0.x
    omit 6703374a16 Bump Forge Shadow plugin to 8.3.11 for Gradle 9
    omit 9918f531e3 Compile CodecMetaClassSupport statically
    omit 2e88f24297 Merge pull request #16271 from codeconsole/docs/rest-resources-patch
    omit e597f9740a Support mapping every controller as a REST resource
    omit 811f25e828 Document the PATCH mapping generated by resources and single
    omit 2fd29c6f41 Merge pull request #16222 from codeconsole/feat/gorm-native-id-type-8.0.x
    omit ebee4507f7 Merge branch '8.0.x' into feat/gorm-native-id-type-8.0.x
    omit 013ba6c143 Make ConfigurationMetadataSpec self-maintaining instead of exact-count
    omit 6a30571fa3 Handle ConfigSlurper environments{} blocks in the DSL parser
    omit 9b58a8a8f0 Merge pull request #16270 from apache/merge-back-8.0.0-M6
    omit 314698d39f [skip ci] Bump version to 8.0.0-SNAPSHOT
    omit 6c3328e3df Preserve the unconditional default when a branch overrides it
    omit dd1ab42936 Fix DSL parser crash on same-named properties across if/else branches
    omit af9c397025 Merge feature/automated-configuration-metadata to pick up 8.0.x
    omit b770e0b7bd Merge 8.0.x to refresh mergeability
    omit 356b9f912e Merge feature/automated-configuration-metadata to resolve conflicts
    omit c08ff11d7d Merge pull request #16265 from apache/sync/forge-aws-gha-7.2
    omit 5a1e15c4fd Sync Forge AWS GitHub deploy with working 8.0.x
    omit 94e04a373c Merge pull request #16264 from apache/sync/forge-aws-gha-7.1
    omit b3f3c253c5 Sync Forge AWS GitHub deploy with working 8.0.x
    omit 381bc41296 Merge pull request #16263 from apache/sync/forge-aws-gha-7.0
    omit 5899f028cb Sync Forge AWS GitHub deploy with working 8.0.x
    omit 59046ddcc3 Merge pull request #16262 from apache/fix/forge-aws-describe-star
    omit d434859a16 Use Elastic Beanstalk managed policies for GitHub deploys
    omit 74b567eacf Merge pull request #16261 from apache/fix/forge-aws-asg-describe
    omit 0be4f672c5 Allow Forge AWS deploys to describe Auto Scaling groups
    omit d18f8de20d Merge pull request #16260 from apache/fix/forge-aws-eb-s3-acl
    omit 4bfe59dad2 Allow Forge AWS deploys S3 ACL and delete on the EB bucket
    omit bb815fa39b Use SLF4J for runtime diagnostics (#15993)
    omit 24fdfcec22 Merge pull request #16257 from apache/merge/7.2.x-into-8.0.x
    omit 5469a7fcaa Allow Forge AWS deploys DescribeStackResource and S3 object ACL
    omit 52da349414 Merge branch '7.2.x' into 8.0.x
    omit e0c5cf17e7 Merge pull request #16256 from apache/merge/7.1.x-into-7.2.x
    omit ae4ed3c200 Merge branch '7.1.x' into 7.2.x
    omit e7b2b6875b Merge branch '7.1.x' into 7.2.x
    omit 8c1561988a Merge pull request #16255 from apache/merge/7.0.x-into-7.1.x
    omit 1c9bd8fd50 Merge branch '7.0.x' into 7.1.x
    omit fa8cec933f Merge pull request #16254 from apache/docs/forge-aws-retire-gcp
    omit 20fccc13d6 Clarify Forge AWS tag packaging and live DNS in docs
    omit 00f6a0b32b Retire GCP Forge deploys and document AWS Elastic Beanstalk
    omit fc95f78906 Merge pull request #16253 from apache/fix/forge-aws-shadow
    omit 6d1f200d09 Apply Shadow so Forge AWS packaging works on Micronaut 4
    omit 9d92ce129b Merge pull request #16251 from apache/fix/forge-aws-workflow-simple-7.2
    omit d0aa6edbae Merge pull request #16250 from apache/fix/forge-aws-workflow-simple-7.1
    omit 9ba323f983 Merge pull request #16249 from apache/fix/forge-aws-workflow-simple-7.0
    omit 37ef3018c6 Simplify Forge AWS GitHub Actions deploy
    omit 0b8cb54c68 Simplify Forge AWS GitHub Actions deploy
    omit b3683f6d5e Simplify Forge AWS GitHub Actions deploy
    omit 5ff4af702f Merge pull request #16248 from apache/fix/forge-aws-workflow-simple
    omit 521517e5dc Simplify Forge AWS GitHub Actions deploy
    omit 4b2f1eca25 Merge pull request #16246 from apache/fix/forge-aws-allowlist-7.2
    omit 7acf630b42 Merge pull request #16245 from apache/fix/forge-aws-allowlist-7.1
    omit 9ed0e22081 Pin Forge AWS credentials action to an ASF-approved SHA
    omit 769204caa0 Pin Forge AWS credentials action to an ASF-approved SHA
    omit 5d9bbcc281 Merge pull request #16244 from apache/fix/forge-aws-allowlist-7.0
    omit cf61c7d36a Pin Forge AWS credentials action to an ASF-approved SHA
    omit 9e9172aa02 Merge pull request #16243 from apache/fix/forge-aws-eb-storage
    omit 42219d0581 Allow Forge AWS deploys to use the Elastic Beanstalk S3 bucket
    omit e4f489258d Merge pull request #16242 from apache/fix/forge-aws-oidc-cli
    omit 698ff28cbd Pin Forge AWS credentials action to an ASF-approved SHA
    omit fd8de78c0a Merge pull request #16240 from apache/merge/7.2.x-into-8.0.x
    omit 5fe7bf95a9 Merge branch '7.2.x' into 8.0.x
    omit c29a028071 Merge pull request #16239 from apache/merge/7.1.x-into-7.2.x
    omit 0f0c54b19a Merge branch '7.1.x' into 7.2.x
    omit 29b9f22c8a Merge pull request #16238 from apache/merge/7.0.x-into-7.1.x
    omit 338c15cb91 Merge branch '7.0.x' into 7.1.x
    omit 7e1e1893c9 feat: migrate Forge deployments to AWS Elastic Beanstalk
    omit d6dadf1572 Merge branch '8.0.x' into feat/gorm-native-id-type-8.0.x
    omit 8296612ced Use one canonical GORM ID type setting
    omit 057ffcd812 Fix join-table foreign keys to use resolved entity table names (#15736) (#16028)
    omit 8152382a8b Merge remote-tracking branch 'upstream/8.0.x' into feat/hiddenmethod-handler-mapping
    omit c9e5956653 Support native IDs for compiled plugin domains
    omit c2fc93b252 Document native id boundary for compiled plugins
    omit dd5e0b511b Modernize native GORM id implementation
    omit 129c92fdb4 Address review feedback for native GORM id support
    omit c982feb634 Reuse matched URL mappings on async dispatch
    omit fb318eef8c Provide a managed fallback promise executor
    omit 479f5e0e2e Restore URL mapping state on async dispatch
    omit 48a7b21da1 Restore promise error recovery semantics
    omit 3ad26eae27 Merge pull request #16234 from apache/merge-back-7.1.6
    omit eb152796a8 [skip ci] Bump version to 7.1.7-SNAPSHOT
    omit 1f6c1a50ee Merge pull request #16233 from apache/merge-back-7.2.3
    omit 3934cb4f47 [skip ci] Bump version to 7.2.4-SNAPSHOT
    omit 69a48fd34d Merge pull request #16232 from apache/merge-back-7.0.16
    omit 043bec8fdd [skip ci] Bump version to 7.0.17-SNAPSHOT
    omit b3febc2d20 Preserve executor affinity across completion stages
    omit 0343abc5af Deprecate legacy async compatibility APIs
    omit 77eeee3cb1 Replace legacy web promise decoration with Spring async support
    omit 351652b1b0 Merge pull request #16181 from apache/ci/rename-joint-workflow
    omit 4f55b785d6 Merge pull request #16227 from apache/feat/move-to-testFixtures
    omit 274bd83f67 Merge branch '8.0.x' into ci/rename-joint-workflow
    omit 80a2962457 [skip ci] Release v8.0.0-M6
    omit 3b931d1b89 Document Spring-managed async execution
    omit e959963e51 Delegate async action results to Spring MVC
    omit 67f93528de Use the Boot application task executor for promises
    omit ab48162355 Modernize default promises with CompletableFuture
    omit c985acb1ab Merge pull request #16223 from apache/revert/16192-async-changes
    omit df305a1131 Merge pull request #16212 from codeconsole/fix/gorm-service-readonly-8.0.x
    omit cd1988f233 Merge pull request #16228 from apache/revert/16192-async-changes-test-cleanup
    omit 318b1b6dc4 test: some test cleanup for readability
    omit 6bfd2471cf build: add `grails-web-common` test fixtures dependency where missing
    omit bc41fa9274 Require a cycle the decorator started to still be running
    omit 2be110a4ed Reuse the active web request during async dispatch
    omit 49b0bc97a8 Unbind the thread even when the request cannot be reached
    omit d15fe2053b Merge branch '8.0.x' into feat/move-to-testFixtures
    omit 14f546cc9c docs: Update gsonTesting.adoc to correct description of the JsonViewTest trait
    omit 64cb2d5235 docs: Update upgrading guide to reflect changes in test helpers and their migration to test fixtures
    omit 011e9da567 build: Move `grails-web-common` test helper to test fixtures
    omit bc7c51edce build: remove redundant dependencies on spring-test
    omit d9d9d64e0a Run the isolated tests in the web suite
    omit 1d843ecba7 Run the isolated tests in the uber suite
    omit 954e60cec9 build: Preserve test-fixtures variants during functional test substitution
    omit 592b38f676 Run the joint workflow against one MongoDB
    omit 49cbe1d312 Cache the mongod apart from the dependency jars
    omit e8f568d8f4 Revert the async changes from #16192
    omit 6e2655d367 Pin the defaultIdType property name on both sides of the build boundary
    omit c4b5d45fda Cover the defaultIdType wiring with a consumer build
    omit 1aaceb2d3a Generate scaffolded controllers with a Serializable id
    omit 1931e75dfc Bind a Serializable action parameter from the request
    omit 1b1b07e1bb Let a GORM domain class take its identity type from its datastore
    omit ae65d133c9 Let autoConfigurationName name a package as well as a class
    omit 27b6097489 Merge pull request #16209 from codeconsole/fix/databinding-raw-collection-8.0.x
    omit 1e74b1afc1 Reuse a server only when it is running the backend being asked for
    omit 608b8ea0a8 Do not open a transaction for scaffold service reads
    omit f4088648f0 Declare the type of the list being bound
    omit d088957e7e fix(deps): Bump hibernate7 versions
    omit 19f49f34c6 fix(release.yml): correct typo in grails-core docs generation step
    omit 23191ec3a1 Merge remote-tracking branch 'upstream/8.0.x' into fix/gsp-spring-boot-standalone-8.0.x
    omit 7e89323aa4 Merge remote-tracking branch 'upstream/8.0.x' into perf/request-path-8.0.x
    omit 7437632475 Merge remote-tracking branch 'upstream/8.0.x' into feat/hiddenmethod-handler-mapping
    omit 4691e25b89 Merge remote-tracking branch 'upstream/8.0.x' into perf/urlmapping-name-resolution-8.0.x
    omit 03811759ea Merge remote-tracking branch 'upstream/8.0.x' into fix/gradle-97-groovy-config-script
    omit 6fbb305004 Merge branch '8.0.x' into feature/mongodb-skip-index-build-8.0.x
    omit cf5c82d031 Merge branch '8.0.x' into fix/databinding-raw-collection-8.0.x
    omit e40cb27b0c Merge pull request #16192 from codeconsole/fix/embedded-mongo-replica-set
    omit a4c7442d4e Keep only tests that change state across the fix
    omit 1829d42ffa Ask the collection branch the question its siblings already ask
    omit 2c00340ac3 Merge branch '8.0.x' into fix/embedded-mongo-replica-set
    omit 6684431d8c Merge pull request #16139 from codeconsole/feature/gsp-compile-static-8.0.x
    omit 17d24ee73d Cover the neighbouring raw collection shapes
    omit ab953715a9 Merge branch '8.0.x' into fix/embedded-mongo-replica-set
    omit ae38d9bc7e Leave a raw collection's elements alone rather than binding them into Object
    omit 14ac0c0fb1 Document the MongoDB settings in application.yml, not only application.groovy
    omit bf1917416f Report which indexes the build created and which were already there
    omit d0d68476fd Report what the index build applied and how long it took
    omit 568013535e Add grails.mongodb.buildIndexesAsync to build indexes off the startup thread
    omit 2c25dfd0b3 Apply the configured settings when GORM is given an existing MongoClient
    omit b2691d485d Add grails.mongodb.buildIndexes to skip MongoDB index creation on startup
    omit 0f8cee341d [skip ci] Release v7.2.3
    omit cbc8a9e8c7 [skip ci] Release v7.1.6
    omit 1622105a23 [skip ci] Release v7.0.16
    omit 837d3f72ab Merge branch '8.0.x' into feature/gsp-compile-static-8.0.x
    omit a8c241a7e8 Give the scaffolding example a controller whose views can be precompiled
    omit 9aea473ce6 Leave a shared view directory to be expanded per request
    omit a0813f495f Read the domain a controller scaffolds from the domain attribute
    omit 7878b7276c Expand scaffolded views at build time again
    omit 2ff37a87ad add missing rat excludes
    omit 2893699c9f quartz - Jobs now carry the name of the application that registered them, and the cleanup sweep only considers those.
    omit e2fb44a121 Merge 8.0.x
    omit 8d373c178c Document / add work around for long running jobs
    omit 5591c70e9f Do not error if a quartz trigger is being scheduled in the past
    omit fa68e5eb7f Prevent null intervals
    omit 8dca5f2fd9 Stop the servers the specification starts
    omit 68c3ac0633 Merge 8.0.x, which now carries #16134
    omit 1876ee2682 Merge branch '7.2.x' into 8.0.x
    omit c8d4217c7b Merge branch '7.1.x' into 7.2.x
    omit a2609b50ee Merge branch '7.0.x' into 7.1.x
    omit e5626547ad Update dependencies
    omit 5752ba0f58 Merge pull request #16134 from codeconsole/feat/taglib-compile-time-index-8.0.x
    omit b7289b624b Merge branch '7.0.x' into 7.1.x
    omit 612cc0db58 Merge pull request #16185 from jdaugherty/importQuartz
    omit bf177eae1d Say something in the two catch blocks that said nothing
    omit d20c006b50 Tear down through the paths that were fixed under it
    omit aae115773c Replace a running server rather than return from a restart, and retry a lost port
    omit 36517b1a63 Leave the request as it was found when the container refuses
    omit 1ba713a286 Say what a version change does to a kept database
    omit 68f46e94f4 Leave the root build as it was found
    omit 33d45408b2 Stop the server the specifications share
    omit e8117a7add Stop every embedded server from one shutdown hook
    omit 712d0126ea Read a setting written as empty as the setting it is
    omit 3cf4596cf0 Clean up after a restart the way a start does
    omit 4ec3de684f Let go of the server only once it is down
    omit c0810cbb1b Publish a url for a server that is listening
    omit c2e1fe5f02 Refuse a replica set the in-memory backend cannot be
    omit e6fa4eb973 Drop the author tag from the rest of the embedded MongoDB module
    omit 8c63e301fa Ask for the MongoDB version where MongoDB tests are configured
    omit 59d78b298e Drop the author tag from the replica set initiator
    omit 2a70426566 Document the replica set an embedded server can be
    omit f673d17c43 Give a reloaded application a server it can use
    omit 7fdb57600c Close the mongod whose replica set never formed
    omit c204890b74 Cover the two names this branch newly binds
    omit c74ae38ce0 List the page compilation settings in the configuration reference
    omit 05e11cc352 Report every operator the class writer emits, and stop re-escaping a value
    omit 5758fc035b document trigger name pitfalls
    omit d72d636b32 document how to run code on every job
    omit 133425cd4e docs - clarify session state
    omit 2406b48d89 test - add timezone spec per previous issue
    omit 2eeb59624f fix - load after hibernate
    omit b83b7262dd feedback - clean up plugins to match previous votes & fix various issues with Quartz
    omit 18250f3d3e Record why the refusal is caught rather than anticipated
    omit 7e03a872d8 Let a request that is finishing finish
    omit 643e8e80ec Unbind the web request even when its request is gone
    omit 3af0db1d36 Merge remote-tracking branch 'upstream/8.0.x' into perf/urlmapping-name-resolution-8.0.x
    omit a279ba5e89 Wait on the url the login left rather than the title it had
    omit 700f66086e Wait for the login to land before reading the page
    omit bcb40ed347 Run the embedded specifications against the server the suite asks for
    omit 9aed751d37 Give the tests the MongoDB version the build asks for
    omit 663a2ac1da Cache the mongod the embedded MongoDB runs
    omit 63982e5565 Share the embedded replica set with the spring-data specifications
    omit 8535e13eba Serve the transaction specifications from an embedded replica set
    omit 3cb9462e0f Stop the embedded MongoDB once
    omit 4e2d14ccec Merge remote-tracking branch 'upstream/8.0.x' into fix/gsp-spring-boot-standalone-8.0.x
    omit c4f60ce5f2 Merge pull request #16187 from apache/spring-boot-4.1.1
    omit d52f80f919 Say where the example's asset pipeline wiring is going
    omit 5e2050dbdb Remove old hibernate library that no longer exists in Grails 8
    omit 1a22d0bef2 Update dependencies
    omit e6e5b37697 Fix for feature rename
    omit 1681a71582 Merge branch '8.0.x' into spring-boot-4.1.1
    omit 2a30340391 Read java version from .sdkmanrc
    omit 446a12ba31 Merge branch '7.2.x' into 8.0.x
    omit ed2e1c378e Merge branch '7.1.x' into 7.2.x
    omit a4c54d42b4 Merge branch '7.0.x' into 7.1.x
    omit 63479045c8 Run the vulnerability scan on pull requests labeled "vulnerability scan"
    omit b00d69b486 fix(deps): remove redundant junit-bom version management
    omit 943ae6549e fix(deps): adjust jackson 2 version management
    omit dfa190cd01 fix(deps): remove redundant duplicate plexus declarations
    omit c0d04789bc fix(deps): remove unreachable duplicate branch in dependencies.gradle
    omit 9a0ed70a0d fix(deps): stop managing the log4j version
    omit a77d5238c6 fix(deps): Bumb guava to 33.7.1
    omit 0a2b2d54cf fix(deps): Bumb commons-codec to 1.22.1
    omit 36b76a37e6 fix(deps): Bumb objenesis to 3.6
    omit 55e4c07793 fix(deps): stop managing the selenium version
    omit 9b988958bc fix(deps): Bump asciidoctorj to 3.0.1
    omit 15f743fd70 fix(deps): Bump spring-retry to 2.0.13
    omit d8d9f4f80c fix(deps): Bump transitive nimbus-jose-jwt version
    omit e84b48d3a8 Merge feature/gsp-compile-static-8.0.x, restoring what its merge dropped
    omit df895a74a4 Merge feat/taglib-compile-time-index-8.0.x, restoring what its merge dropped
    omit 104066fc7c Merge remote-tracking branch 'upstream/8.0.x' into perf/request-path-8.0.x
    omit 7851d40d68 build: conditionally transfer versions in end-to-end for sdp
    omit 84b7ee5088 Merge branch '8.0.x' of https://github.com/apache/grails-core into feature/gsp-compile-static-8.0.x
    omit 99b5e00336 Merge branch '8.0.x' of https://github.com/apache/grails-core into feat/taglib-compile-time-index-8.0.x
    omit ecf1615df0 fix(deps): Remove redundant bom overrides after boot update
    omit 3530f846b0 Merge remote-tracking branch 'upstream/8.0.x' into fix/gradle-97-groovy-config-script
    omit d2e973a3f0 Merge branch '8.0.x' of https://github.com/apache/grails-core into fix/gsp-spring-boot-standalone-8.0.x
    omit f9c7970759 Merge remote-tracking branch 'upstream/8.0.x' into feat/hiddenmethod-handler-mapping
    omit 1c005d7fae Merge pull request #16142 from codeconsole/fix/16131-gsp-source-checksum-7.0.x
    omit 32f1eaf935 Correct a spec comment that outlived the timestamp
    omit 370a6e644b Merge branch '8.0.x' of https://github.com/apache/grails-core into fix/16131-gsp-source-checksum-7.0.x
    omit b914f8c29c fix(deps): Update Spring Boot to 4.1.1
    omit bf7e0a03d1 test: cleanup
    omit f12488d728 Give the example a page worth looking at
    omit f9dc11dd5a Merge pull request #16174 from apache/fix/cas-single-signout-and-proxy-receptor
    omit b889b8e6c8 Merge branch '8.0.x' into fix/gradle-97-groovy-config-script
    omit b9ab07fd20 build: Move `grails-core` test helpers to test fixtures
    omit 40c8215d1c Generate links in an application that maps no URLs
    omit 914126c550 Merge branch '8.0.x' into feature/gsp-compile-static-8.0.x
    omit 547516d694 Merge branch '8.0.x' into feat/taglib-compile-time-index-8.0.x
    omit 95c343ddb2 Style the example with Bootstrap through the asset pipeline
    omit 8bf66fb543 Find the tag libraries a Grails plugin carries
    omit cc32e054c8 Keep the compiled pages off the main runtime class path
    omit 79a69b3381 Put three javadoc blocks back on the members they describe
    omit c2c45fb7de Decline an argument list no tag call takes
    omit 8750284f57 Vulnerability updates
    omit cc6ac94626 Ensure plugins are scanned for vulnerabilities
    omit 2f71204fc4 Quartz Merge - Rename Clustered Scheduling to Advanced Scheduling
    omit 5e142ae30d Quartz Merge - Nest Quartz under Background Jobs as Clustered Scheduling
    omit 59a0151f86 Quartz Merge - Add a Background Jobs guide chapter
    omit 670bd78779 Quartz Merge - Declare the spring-context-support runtime dependency
    omit 1560376969 Quartz Merge - Ignore reformat code commit
    omit afd9950316 Quartz Merge - Reformat code that mismatches our code style
    omit 8d00a7cb91 Quartz Merge - Integrate Docs
    omit 79704bb1cd Quartz Merge - Integrate Build
    omit f4e088d879 Quartz Merge - Initial Moves
    omit 5265137acd Initial import of Grails Quartz Repository
    omit 5c45f23a8b Read the classes the forked page compiler wrote
    omit 9572cf6590 Document the type attribute and correct two statements about the default
    omit 16c7624c3a Convert a typed value rather than require it to already be the type
    omit 608a5f57a9 Bring in the part of the Grails web tier this example renders with
    omit 478d1e455a Leave the JSP compiler out of the executable jar
    omit 4450c195bc Merge remote-tracking branch 'upstream/8.0.x' into fix/gsp-spring-boot-standalone-8.0.x
    omit e8cb6d9ee4 Leave the gsp-spring-boot example configured with what it teaches
    omit 3159fc709c Order the GSP auto-configuration imports as the style requires
    omit b93224d8c4 Count an application GrailsApp launched as a Grails application
    omit ec69c9c5f6 Apply the SiteMesh defaults without asking to be enhanced
    omit 4f6975c009 Run the Grails plugin lifecycle for a Grails application only
    omit 08c38aaef1 Contribute the core beans that read the application only where there is one
    omit 56d1db946a Register GSP tag libraries as beans instead of inside the lookup
    omit 6fb9853984 Configure the GSP codec lookup after the codecs module contributes one
    omit 8579fd6107 Merge remote-tracking branch 'upstream/8.0.x' into feat/hiddenmethod-handler-mapping
    omit a1ac13297c build(test): make the isolated test tasks actually run their tests
    omit 35780cdd18 feat: disable the hidden HTTP method filter by default
    omit 8f58534ac9 Offer the JSP rendering only where the example can serve one
    omit c30426ee01 Start a standalone GSP application that has no JSP support
    omit ca1d139544 Write the GSP view registry whole rather than merging it
    omit b2a42af3c7 Package the gsp-spring-boot example as its compiled views
    omit b4abdb17ff Render precompiled GSP views in a standalone Spring Boot application
    omit dde9a2372e Put the compiled GSP pages on the runtime and test class paths
    omit f9aed8b568 Ship the GSP sources in the packaged gsp-spring-boot example
    omit d46653fab0 Start and decorate GSP views in a standalone Spring Boot application
    omit 44d3fe19b2 Make the Grails auto-proxy creators known to Spring where they are registered
    omit 5a4fab66a2 Put a licence header on the files the new application added
    omit 7a5df8ab1f Give a typed g:set a scope rather than a page-wide name
    omit 95a9eb6f15 fix(cas): address review feedback on metadata, docs, timeouts and style
    omit efa8e7e16a fix(cas): address review feedback on README, CI duplication and plugin metadata
    omit 46e1f1ccae fix(cas): package names aligned, log.warn removed in favor of println
    omit 155a845537 fix(cas): repair proxy receptor and single sign-out, add integration tests
    omit 32d19da2a2 Add an application whose pages are compiled statically
    omit af62583ac5 feat: move the hidden HTTP method override into the dispatcher when the filter is off
    omit b0df13fd0d Merge pull request #16033 from apache/fix/flaky-json-view-gson-shared-state
    omit 57e3aa759e Merge pull request #16179 from codeconsole/fix/urlmappings-factory-bean-object-type-8.0.x
    omit 1d82b09941 Report an unregistered tag as the dynamic path reported it
    omit 0f59eafd57 Cover the controller the rewrite decides by its directory
    omit cb99cc8fc1 Read a class for tag calls once its traits have been applied
    omit e718a7ba79 Take Gradle 9.7.1
    omit 38ebef690f Merge remote-tracking branch 'upstream/8.0.x' into fix/gradle-97-groovy-config-script
    omit 58cdf3efe2 Merge branch 'feature/gsp-compile-static-8.0.x' of https://github.com/codeconsole/grails-core into feature/gsp-compile-static-8.0.x
    omit 76ddc20e75 Merge branch '8.0.x' of https://github.com/apache/grails-core into feature/gsp-compile-static-8.0.x
    omit 6f9760b1af Merge branch '8.0.x' into feat/taglib-compile-time-index-8.0.x
    omit de86958b81 Merge branch '8.0.x' into feature/gsp-compile-static-8.0.x
    omit 1f63d1a784 Fix three things sbglasius found in the page compiler
    omit 6a020c390b build: Move GraphQL test helpers to test fixtures
    omit 3de2f487e1 ci: simplify groovy snapshot canary workflow display name
    omit 413d19fe85 Neo4j GormRegistry migration (consolidated: replaces #15816, #15951, #15817, #15832, #15833) (#15972)
    omit 91e0a3c345 ci: add proper name to `build_groovy` job
    omit 40bbd562cf ci: rename the Groovy Snapshot Canary Build workflow
    omit 319b5cb818 build: Move JSON view test helpers to test fixtures
    omit d7ee26c4b2 Rework entity decoupling as per-spec sub-packages instead of prefixed names
    omit 9a472722b0 Declare what the url-mapping factory beans produce, so nothing is created to find out
    omit 437b489e05 Say plainly that the granularity setting is gone
    omit f39a7f6e1e Remove the recorded modification time entirely
    omit 894266cb5b Move to the 8.0 line
    omit a3d0871f79 Parse from the decoded source rather than wrapping the bytes in a stream
    omit b4064c9628 Document the development-mode reload change
    omit e6b65f13a8 Correct two statements the runtime-path checksum invalidated
    omit 7dbea7d626 Record a checksum for pages compiled at runtime too
    omit c0cdbbde39 Skip re-hashing a page whose source stamp has not moved
    omit b782f2eb9c Target the 7.1 line and document the change in its upgrade guide
    omit 0126081f56 Take the checksum over bytes rather than a stream
    omit e55dd6e5f7 Keep the -1 timestamp sentinel able to self-heal
    omit 81f8cdafb5 Cover checksum precedence over a recorded modification time
    omit 41bb9354a4 Record a source checksum in precompiled GSPs instead of a modification time
    omit b18355711d Make precompiled GSP classes byte-reproducible
    omit 86c4f060ef Merge branch 'feature/gsp-compile-static-8.0.x' of https://github.com/codeconsole/grails-core into feature/gsp-compile-static-8.0.x
    omit 7b3d21a772 Merge branch '8.0.x' of https://github.com/apache/grails-core into feature/gsp-compile-static-8.0.x
    omit 244b48f249 Read the Spring Security version from the class the page already resolved
    omit 86642abeb0 Merge branch '8.0.x' of https://github.com/apache/grails-core into feat/taglib-compile-time-index-8.0.x
    omit f42924db13 Merge remote-tracking branch 'upstream/8.0.x' into perf/request-path-8.0.x
    omit 645241d930 Say that a namespace is not checked against a closure's delegate
    omit 8ea3a9aa3e Say why the deprecated URL constructor stays
    omit d0c68dc38f Merge pull request #16163 from apache/groovy-5.1.0
    omit c4052b889e Merge remote-tracking branch 'upstream/8.0.x' into perf/request-path-8.0.x
    omit 7ec07a2bf7 Merge branch '8.0.x' of https://github.com/apache/grails-core into feature/gsp-compile-static-8.0.x
    omit cb57d22e32 Do not describe a class an application could never register
    omit f1a857373f Merge pull request #16102 from codeconsole/feature/i18n-boot-message-source-8.0.x
    omit e1af1b99ef Check tags only in the namespaces this project describes
    omit 7aaa5bcaa7 Merge branch '8.0.x' into feature/i18n-boot-message-source-8.0.x
    omit 12985ef89a Record a tag name, not how it was written
    omit 983e502f1c Merge pull request #16094 from codeconsole/fix/aot-live-instance-beans-8.0.x
    omit 8444cc5466 Merge remote-tracking branch 'upstream/8.0.x' into fix/aot-live-instance-beans-8.0.x
    omit ac919290f3 Take SiteMesh 3.3.0-RC1
    omit 045868cd81 Check a real build compiles a convention controller's tag call
    omit 6ee0ba756a Merge pull request #16034 from apache/fix/flaky-where-query-closure-capture-cache
    omit 95955df6bf Pin the unqualified setting on both sides of the module boundary
    omit 5852104a30 Compile a tag call the source proves is one, and make the rest opt-in
    omit 72b3fffb20 Describe only what was asked for, and dispatch a shape a tag cannot take
    omit 2926a0f644 feat: GORM O(M+N) scaling — GormRegistry, SessionResolver infrastructure, and core-class tests (consolidates #15779, #15780, #15790) (#16066)
    omit c1ce109b06 Enumerate a tag library's tags once, for both views of it
    omit 728f00f1a0 Merge branch '8.0.x' into build/ci-daemon-heap-vs-runner-ram
    omit 89e993c3ba Merge pull request #16158 from apache/fix/test-fork-oversubscription
    omit 49e51adbdc Merge branch '8.0.x' into fix/aot-live-instance-beans-8.0.x
    omit 5c836c436f Name the controller types this module declares as types
    omit 80ee12adc4 fix(deps): update jackson2 and jackson2-annotations versions to address CVE-2026-54515
    omit ca05235642 build: update jline/jansi to align with Groovy
    omit cc7e0c3353 build(ci): bound concurrent JVMs on the macOS runner
    omit 143c982ee9 Merge remote-tracking branch 'upstream/8.0.x' into feature/i18n-boot-message-source-8.0.x
    omit ccca92fd4b build(test): qualify configuredTestParallel via rootProject.ext
    omit 0f5f5b653a build(test): assert ActiveProcessorCount reaches forks
    omit c954bb5117 ci: update version extraction logic in groovy-joint-workflow.yml to include minor version
    omit 86518ca064 fix(deps): update another `groovy.version` in dependencies.gradle
    omit 4a289e331a refactor: remove Groovy 5 workaround for GROOVY-12134
    omit e45c8ce549 fix(deps): update Groovy to 5.1.0
    omit deac428c1e Merge pull request #16052 from apache/fix/enum-hasmany-ddl-16051
    omit eaa0af6867 Merge pull request #16136 from apache/fix/issue-16133
    omit 3650fdf15a refactor: rename isIdentityOrVersion to notIdentityOrVersion
    omit 0b8473f6e4 Document what an oversized upload reaches, and where it does not
    omit fcb65f9879 Cover the oversized upload path on Tomcat, Jetty and Undertow
    omit f145eb2f43 Stop an error handler that fails from being forwarded to forever
    omit 9b580c9ac9 Read every framework request parameter through one tolerant helper
    omit bb2a8b0492 Cover oversized uploads and multipart method overrides end to end
    omit 1beae2175d Let oversized uploads reach the application's error handling
    omit 180a6cbf6c Benchmark the redirect and render paths
    omit 785d4e5f41 Take the cached collaborators out of the controller traits
    omit 8803bd697d Renumber the upgrade note to avoid colliding with the request-path branch
    omit c8f89ab26d Use the guide's table syntax for the URL mapping upgrade note
    omit 4b2ab93972 Document that captured URL mapping names come from the URI
    omit 4c9d8d8a6b Resolve captured URL mapping names from the match, not the request
    omit 8d315b7369 Fold the request-path benchmarks into grails-benchmarks
    omit 6d468648a8 Take asset pipeline 5.2.0-M3
    omit 0d195f1493 Address review: skip caching interned nodes, compute outside lock, fix isDomainClass javadoc claim
    omit f8e4485cbe chore: add back import after bad merge
    omit cbb9a0de0c Merge branch '8.0.x' into fix/issue-16133
    omit 7d5e684929 fix(config): bind nested settings maps under Spring 7
    omit 47cb138493 test: more default nullable test coverage
    omit d76700ae30 docs: update documentation to clarify changes in default nullability for persistence mapping
    omit 7f28c4b15c chore: simplify `VirtualThreadPromiseFactory`
    omit 67780aa992 fix: ensure correct promise type casting in PromiseList
    omit 5d911ba439 docs: update asyncPromises documentation for virtual-thread promise factory
    omit cb0db006e0 test: update EnumTypeBinderSpec to handle changed nullable default
    omit baa3a4c0a3 fix: nullable-by-default mapping cases
    omit 9cf91149ac test: cover nullable-by-default mapping cases
    omit 3bd188642f fix: virtual-thread executor usage for multi-closure promises
    omit a598d287a4 Address round-2 review: scope getTable override, restore log, harden specs
    omit 30cac71a8f Drop the controller convention case from the rewriting spec
    omit 63a462a776 Move the tag library bean registration to org.apache.grails
    omit e28672d89e Move the Gradle plugin's AOT classes to org.apache.grails
    omit 7286f5c4cb Clear the style violations left by the review changes
    omit 6b67de9dc6 Leave an unqualified call inside a closure to the closure's delegate
    omit db49c9488f Quote the port message the way CodeNarc asks
    omit 1ece28fbbb Refuse to generate Neo4j definitions that carry the machine's configuration
    omit 416096af49 Say what is wrong instead of publishing through a null
    omit 6480f53211 Stop concurrent index writes losing entries, and cover the rest of the review
    omit a3d5a48b39 Fingerprint the extraction by the JDK, not by where it lives
    omit 3890b3466e Refuse a port something else is already answering on
    omit e68da7d3db Ask for the asset task by name instead of holding the container
    omit 709989ae37 Record the pages after they are compiled, not before
    omit 68901e2858 Finish the review: index reads, discovery pins, and the notes that were missing
    omit cb76065a1e Close the client the trace ran with
    omit 03638e7424 Wait for the application to start, not for the word "Started"
    omit 0021e820a5 Keep the project out of what the AOT tasks carry
    omit 8ce567cf0d Wire the index into test runtimes and stop restating what nothing reads
    omit 874c053068 Merge remote-tracking branch 'upstream/8.0.x' into fix/aot-live-instance-beans-8.0.x
    omit 6d4bb566bf Give the training run the archive by its full path
    omit 781eb505f1 Drop the two index methods nothing calls
    omit c89bbaf534 Number the index format from one and drop the doubled javadoc
    omit 298d585422 Say what the self-describing fallback covers, and deprecate what installs onto metaclasses
    omit 79193b6a75 Declare where tag call rewriting runs instead of relying on a default
    omit 156977b997 State what a page with no tag library lookup does with an unresolved name
    omit eb5b692360 Leave a name Groovy already answers to out of unqualified rewriting
    omit 4912fc3623 Address jdaugherty and Copilot review feedback on groovydoc link audit
    omit 06caab3551 Decouple auditGroovydocLinks from the default docs build and add test coverage
    omit c0bc0ef20c refactor: rename groovydoc link check to audit task and remove property control
    omit 15c7420731 docs: fix broken external and internal links in Groovydocs and add audit mode
    omit 54ea20836a fix(grails-data-hibernate7): make type: 'text' produce an unbounded column (#16020)
    omit f3413b4f6e Merge pull request #16050 from apache/deps/codeql-action-4.37.3
    omit 5d9855e146 Merge pull request #16032 from apache/fix/flaky-running-application-process-timeout
    omit 13c964143f build(test): stop test forks oversubscribing the machine
    omit 4ef8cba33f build(test): make isolatedTestsTwo actually run serially
    omit aaefad82fc Isolate the domain binding spec from discovery strategies left by other tests
    omit 3f8ce887d4 Merge remote-tracking branch 'upstream/8.0.x' into feature/i18n-boot-message-source-8.0.x
    omit e972b2ca5f Merge remote-tracking branch 'upstream/8.0.x' into perf/request-path-8.0.x
    omit b964e603d0 Merge pull request #15950 from apache/fix/binddata-null-missing-stale-data
    omit bfb87bf002 Merge branch '8.0.x' into feat/taglib-compile-time-index-8.0.x
    omit a8e9fb6124 Merge branch '8.0.x' into feature/gsp-compile-static-8.0.x
    omit f579cf3135 Merge pull request #16071 from apache/perf/8.0.x-jmh-pr-benchmarks
    omit a6f4846fec Merge branch '8.0.x' into fix/binddata-null-missing-stale-data
    omit 11ebb5a8cd Merge pull request #15947 from apache/fix/binddata-mass-assignment
    omit 1628a9c31f Merge pull request #16141 from jamesfredley/docs/grails-7-plugin-compatibility
    omit 1b758d9d54 Restore the locale context on include and forward dispatches too
    omit ae94719e30 Document the test impact of deprecating getCurrentRequest
    omit 78ff86793c Add benchmarks for the always-on request paths
    omit 6b304783f9 Deprecate getCurrentRequest and call getRequest directly
    omit abc0316b0e Cache the per-request lookups in the redirect, render and domain binding paths
    omit 992084a8b8 Merge remote-tracking branch 'origin/feature/i18n-boot-message-source-8.0.x' into feature/i18n-boot-message-source-8.0.x
    omit 0221bb01d8 Reject plugin descriptor names that collide once normalised
    omit 8ef9bbd7a9 Cache the data binding collaborators and the databinding whitelist lookup
    omit f1267f616a Stop generating allowed-methods bookkeeping into every controller action
    omit 4e8883474b Stop allocating a JDK proxy per interceptor phase per request
    omit 6be65ebcbf Skip URL mapping candidates that cannot match before running their regex
    omit cc1cbac7bc Record the request-path benchmark baseline
    omit ba29b546d4 Document the request processing behaviour changes in the 8.0 upgrade guide
    omit ab68e688e9 Stop copying the servlet parameter map on every request
    omit 5511f09507 Delegate handler chain assembly to Spring and stop reallocating interceptors
    omit 959448b51b Resolve the request-scoped application attributes once per servlet context
    omit 0709bf4f38 Cut unused helper and repeated javadoc from the multipart cleanup
    omit 32b0d9f5a4 Discover the multipart request instead of substituting it
    omit ecff934dbc chore: cleanup `DefaultASTDatabindingHelperDomainClassSpecialPropertiesSpec`
    omit b22be60569 Say what the artefacts are read from, and check it holds
    omit 67abf890b7 Reach the archive and the assets without resolving them early
    omit 437e627074 Say unknown where a version was asked for, and nothing where it was not
    omit d81902f70b Ask in one place whether the code is being written out
    omit 1714f2b055 Leave one thing deciding what the definitions are generated for
    omit 79bd5b9488 Put the new ahead-of-time code under org.apache.grails
    omit e93d383ea8 Leave scaffolded views to be produced where they always were
    omit 07a30bb3eb fix: preserve bidirectional binding with nullable associations
    omit 88538f535a Declare the compiler config script task's caching behaviour
    omit 0bc0f16bb3 Merge branch '8.0.x' into fix/gradle-97-groovy-config-script
    omit 61df8413aa Document the import changes in the Grails 8 upgrade guide
    omit 1d42801229 Drop importJavaTime, which Groovy 5 makes redundant
    omit b288d28ee4 Merge remote-tracking branch 'origin/fix/gradle-97-groovy-config-script' into fix/gradle-97-groovy-config-script
    omit dfbb54db70 Give the compiler config script a task type of its own
    omit a54943de1e Show an undeclared name rather than a misspelled one in the model example
    omit 636a0e7315 Wait for a task that produces the build's own compiler config script
    omit e823ab9568 Use the tag that fits: def for a page-local value, set for a scoped one
    omit ca6b10ebe0 Build the compiler config script from configuration state, not the classpath
    omit a794e2ac51 Let the set tag be given a type
    omit 0eebb1e154 Use the lazy configurationScriptFile property, and pin the classpath scope
    omit 43dcdc488b Cast a primitive g:def through its wrapper
    omit a83f87480e Merge pull request #16138 from apache/dependabot/github_actions/softprops/action-gh-release-3.0.2
    omit eae66f7903 Merge pull request #16137 from apache/dependabot/github_actions/testlens-app/setup-testlens-1.9.3
    omit 2263394899 fix: initialize `defaultNullable` to `true` in `AbstractGormMappingFactory`
    omit f07ddd11b7 test: reset fixtures and UserIntegrationSpec assertions
    omit 6948b393a3 chore: whitespace
    omit 4431eced56 Merge pull request #16144 from codeconsole/feature/gsp-escaped-dollar-8.0.x
    omit 2eb6d04f46 Read the Spring Security version off the package, not through reflection
    omit f719515a07 Document the names a page is given, now that all but two carry their types
    omit 61618252e5 Declare the framework supplied names on the page rather than its base class
    omit 0609f8fc64 Make the welcome page of a new application compile statically
    omit 8596515dd9 Hold back only the receivers of operators written into the class
    omit 1df3458207 Report an operator on a value of no known type
    omit abd0453525 Bind the qualified domain name when expanding scaffolded views
    omit b0ca3f3ce7 Let a build ask that every page declare what it reads
    omit bc8b9c847f Read a page the way it asks to be read
    omit 9843b9ef39 Let a page read a name it introduced with a tag
    omit 0b090a557b Type a page's parameters as TypeConvertingMap rather than Map
    omit daaa4048b0 Support escaping a GSP expression with a backslash
    omit 9ef02258c9 Address plugin compatibility review feedback
    omit 2c8b338f1c Document Grails 7 plugin compatibility on Grails 8
    omit 197408ae16 Add a build option for compiling pages statically
    omit fb6518ead9 Check where a form page was answered from, as a path already is
    omit 7afd382a6c Let an artefact type be held back from the compileStatic all shortcut
    omit 8da070f87f Type the names a statically compiled page never declares
    omit e457e60bdc Document and test the GSP compileStatic configuration
    omit cb374b1c3a Trace what was asked for, or say that it was not
    omit 5a924d11b8 Put back the cookie handler the build was using
    omit 35657c9b02 Leave Neo4j holding the configuration it can still reach
    omit 4788cebfc2 Say what makes standing down over the configuration processor safe
    omit 0a8b8f5022 Make the ahead-of-time application serve a page, not only start
    omit 082b6b4829 Ask the post-processor about colour through the hook that decides it
    omit 1d95c8eff2 Leave collectMappedClasses saying what it has always said
    omit 5a10ebfac3 test: adapt other tests to fixing issue 16133
    omit 274ea82b5d fix: issue 16133
    omit 3570c760ed Bump softprops/action-gh-release from 3.0.0 to 3.0.2
    omit 641b7d24f2 Bump testlens-app/setup-testlens from 1.9.2 to 1.9.3
    omit 592a3fb56c test: reproduce issue 16133
    omit 6fa81e7777 Write down what the banner now says without being asked
    omit e517a9d7b4 Say which banner version option was not recognised
    omit 9bbd56625c Say which JDK a cache needs, rather than let the run fail for it
    omit 48d9d2b37a Tell Gradle what decides whether the views are staged
    omit 4016bae65d Keep the image to the properties files something actually reads
    omit cbc1ffa172 Let every datastore name its event publisher rather than hold one
    omit 49a59448d6 Give two version lookups back the documentation left above a third
    omit 4b9352d453 Ask for nullability with the annotation Spring did not deprecate
    omit 3e7aab6b06 Merge branch '8.0.x' into fix/gradle-97-groovy-config-script
    omit 91f8d3d43b Merge branch '8.0.x' into feat/taglib-compile-time-index-8.0.x
    omit 2780990aaa Take the compiled classes, not the whole source set output
    omit 2bff14123a Drop an import left over from rewiring the index outputs
    omit 58bc54102c Add the descriptors to the library artifact alone
    omit 0e7d2022ba Claim a skipped tag library's namespace only when the source is plain
    omit 25a292dd00 Measure the rewriting rather than static compilation with it
    omit d1c446ac6d Read a skipped tag library's namespace rather than match it
    omit 1ec4b8a0f4 Keep this project's compile settings out of what it publishes
    omit 86ed5d8401 Prove a deleted tag library cannot survive in what is published
    omit 2834ffbf98 Package the index written after this project is compiled
    omit 73d6bd3fdf Describe a tag library that refers to what this project declares
    omit c417954b9a Measure what compiling a tag call is worth on its own
    omit 2a72625dfc Do not fork the index generator for a project with no tag libraries
    omit fdeb5e86fe Say which page tag forms strict checking covers
    omit 33e2e90b9f Know a tag library declaring no tags has been described
    omit fcd70e89bf Document compiled tag resolution
    omit 07a909cdea Let the build state what it knows about its tag libraries
    omit b9e2b510b6 Report an unknown tag only where the source says it is a tag
    omit 54773e74a6 Describe each tag library once
    omit 960c9cc97e Resolve a tag expression in a statically compiled page
    omit b204c78c35 Resolve a tag call wherever it is written
    omit b1ab9a42a6 Invoke a resolved tag with the arguments it was called with
    omit 1235c4cf1a Register the tags a tag library actually has
    omit 515c4b5f80 Read the tag library index once per compilation
    omit fa1e14756d Merge pull request #16095 from codeconsole/feature/mongodb-embedded-8.0.x
    omit 05648caf1a Name the generated MongoDB database the way a SQL one is named
    omit 544710fd1d Add the Apache license header to the compiled tags guide page
    omit 32a9393074 Recognise a boolean getter as claiming a namespace name
    omit 9729ec1ff1 Let a project resolve the tags it declares as it compiles
    omit 1bf67a36b7 Only treat a name as a namespace when nothing else claims it
    omit 04540b6b6d Remove an import left over from dropping the bootstrap metaclass enhancement
    omit 106aaae036 Record how each tag is implemented
    omit 37e5752e8f Resolve tags without writing to a metaclass anywhere it matters
    omit 2ab866640a Let more than one directory hold tag libraries
    omit 164f297c58 Document compiled tag resolution
    omit 9d2304f53f Compile tag calls in controllers too
    omit d6a204f673 Correct three compatibility faults in tag resolution
    omit 9412856f12 Compile a call to a known tag into a direct invocation
    omit b34de798bb Stop installing tags onto tag library metaclasses
    omit 02a8e79925 Add an explicit entry point for invoking a resolved tag
    omit 7e10994139 Report an unrecognised tag as a compilation error
    omit b525a4a340 Dispatch tags without writing to a metaclass
    omit 26da0a12c5 Register tag libraries from the compiled index
    omit 3c847aa8b5 Generate the tag library index before compilation
    omit ba48005ad8 State the tag discovery rules once
    omit d98ea0d684 Leave a tag declared twice to runtime resolution
    omit f621337ae6 Make the tag index agree with runtime in three more cases
    omit 90075c3c8b Cover tag library index merging across jars
    omit c992f603e0 Precompute tag method argument binding
    omit 8afe580f86 Resolve GSP tag calls against the compile-time index
    omit 7c5b93fb14 Generate a tag library index at compile time
    omit dd8e310644 Define tag handlers as methods in PlainTextMailTagLib
    omit 4633c6777b docs: clarify behavior of clearMissing for Grails-managed properties
    omit 13091653f5 feat: implement wildcard expansion for included properties in clearMissing
    omit 0c876331b0 test: improve clarity of bindData test names and enhance clearMissing behavior
    omit e133a02446 docs: enhance bindData documentation with wildcard usage and clearMissing behavior
    omit 3352c00b7f test: improve clarity of test names for clearMissing behavior
    omit c4e58c24ec docs: clarify behavior of clearMissing in FrameworkPropertyNames
    omit 8cc9ceed92 Rename `nullMissing` to `clearMissing`
    omit 90dacd3edb test: configure multipart file upload limits in example-app1 application.yml
    omit 535e8141b8 Merge pull request #16121 from apache/fix/managed-entity
    omit 3e9ca7a4c0 Merge remote-tracking branch 'upstream/8.0.x' into feature/i18n-boot-message-source-8.0.x
    omit 9e9c4600be Merge branch '8.0.x' into feature/mongodb-embedded-8.0.x
    omit e997f98606 Merge branch '8.0.x' into feature/i18n-boot-message-source-8.0.x
    omit 33af958b12 Sort the AOT imports the cherry-pick left out of order
    omit 2649ca482b Let a traced form be told what to put in it
    omit 49ec1f06a4 Record the reflection a running application does, from a declared list of paths
    omit 1240ce7857 Keep the setters a domain class's constraints are applied through
    omit 2876503929 Fold the task's two javadoc blocks into one
    omit fa710fd59f Merge branch '8.0.x' into fix/aot-live-instance-beans-8.0.x
    omit eef515dfae Ask about the return that rewinds a line, not the one that ends it
    omit 321c9de6f5 Merge pull request #16118 from codeconsole/fix/gsp-compile-java-toolchain-8.0.x
    omit 09fee3d3b9 Merge branch '8.0.x' into fork/gsartori/use-spring-upload-config
    omit 5e1acba929 Merge pull request #16119 from codeconsole/forge-security-beans-dsl
    omit 82d3011d3f docs: update multipart configuration documentation
    omit ca1ea870b7 feat: implement environment post processor to validate legacy multipart configuration
    omit da7c42d523 test: add multipart file size limit tests to FileUploadSpec
    omit 7488c877a5 test: simplify `ControllersAutoConfigurationSpec`
    omit d62fd9c837 test: add multipart configuration tests for dispatcher servlet registration
    omit 8f1fa16053 Merge pull request #16096 from apache/remove-decommissioned-test-code
    omit 1c77528134 Merge pull request #16104 from apache/remove-missing-slf4j-warnings
    omit 4e2b0463c4 Merge pull request #16103 from apache/refactor-depr-gradle-test-listeners
    omit 72d0873c0b Merge pull request #16026 from apache/fix/gorm-numeric-column-dialect-precision
    omit dad867634c Merge branch '8.0.x' into fix/binddata-mass-assignment
    omit fbdf186fe1 Merge pull request #15800 from apache/fix/15374-codec-metaclass-registration-overhead
    omit fcc8f257b9 Merge pull request #16116 from apache/perf/8.0.x-ci-wall-clock-regression
    omit 91ee8a8283 chore: add license headers
    omit 9b508ab3fa test: add example domain class with `@ManagedEntity` in hibernate7 example
    omit 2c10d5dfb0 fix: update HibernateEntityTransformation to use a specific applied marker
    omit 362ffd4571 test: add example domain class with `@ManagedEntity`
    omit 7fbe45e180 Seed a non-admin account in generated secured apps
    omit f64b04c71c Lock down the generated Spring Security defaults
    omit c465952f53 Do not hand the training run a variable the daemon kept but emptied
    omit 81a151cbcd Generate Spring Security wiring through the beans DSL
    omit 8b8d063316 Keep the compiler config wiring live and correctly ordered
    omit 8804f208a9 Shard remaining critical CI test legs
    omit 184821249d Say why the training run ended, not only that it did
    omit baf640289e Say how the extracted application is compared, so the task validates
    omit 905964362b Ask for an embedded MongoDB by url, the way an in-memory SQL database is asked for
    omit 7bb015970e Separate rerun build work from its test shards
    omit 7ebf2fb3e1 Shard critical selector test legs
    omit fe4c9cfc2e Stop caching what a forked compiler produced
    omit cd4490aea5 Parallelize remaining critical CI workloads
    omit 61d90312d6 Register an image's resources as hints rather than as build arguments
    omit f18532d7f8 Space a mark as it was written rather than shouting it
    omit bd86459603 Give an application building ahead of time what it needs
    omit 57a387c032 Parallelize critical CI test workloads
    omit 8a3a79ffb6 Add deterministic test task sharding
    omit f813b48af6 Compile GSP pages with the Java the project asked for
    omit 8b8bea09af Cover the checkpoint and restore path the embedded MongoDB depends on
    omit 223ac95f26 Build on JDK 21.0.12
    omit 199eb8e23e Show the container being served on, and stop at the first one found
    omit 8a28c10784 Show Spring Security by default, and leave out what cannot be determined
    omit 8ba500ddc0 Read an optional version without setting the library going
    omit 2187890a6a Keep the banner's option enums usable in an image
    omit 03b9909ba4 Say under the banner how the application was started
    omit 37f771067b Remove an import left unused by the previous commit
    omit 4e93ca18b9 Let an application with an embedded MongoDB take a CRaC checkpoint
    omit 17f81fe981 Generate applications with the Gradle 9.7.0 wrapper
    omit 56a8dc4da4 Build with Gradle 9.7.0
    omit 7297db5fdc Do not start an embedded MongoDB while generating bean definitions
    omit 790b5c1f33 Train on the toolchain's JDK, and leave the cache beside the application
    omit ac9075ac5d Follow every type a class file names, not some of them
    omit b2009c4382 Assert what the registrar now says these beans produce
    omit aeb9004179 Address review of the AOT cache task
    omit 3fec0cd0a8 Correct the AOT cache figures
    omit 59e644ba47 Package compiled assets where an executable jar can read them
    omit b2c7f4395d Document the AOT cache
    omit da9dcd733c Train a JDK AOT cache from a run of the application
    omit ac091ad8a9 Use plain map-entry spacing in the native metadata task
    omit 5846c43855 Let an image call the Spring interfaces a plugin is handed
    omit 7a063e3a98 Skip a closure whose surroundings cannot be loaded
    omit 813e1918da Let an image call the framework's own interfaces
    omit 7687f84639 Leave a datastore's proxy handler alone
    omit 181ac758a9 Address review: metadata only for a native build, and four smaller things
    omit af29982470 Let an application choose the colour the banner art is shown in
    omit 79f1dccc59 Show the banner art in the framework's colour
    omit 7d2bad0f02 Colour the output of an image that is being run at a shell
    omit feb740f097 Ship what an image needs with the framework rather than asking for it
    omit 9ba4d149a1 Carry what a page compiled at build time is read from
    omit f304120624 Define the url mappings holder as reloadable only where it can reload
    omit 26f464bef9 Leave the plugins' own artefacts to the plugins
    omit 2b0824fef5 Write down the artefacts an application is made of
    omit 0d0dc239d1 Do not read the application's own bean declarations a second time
    omit 33c54d8c45 Read the flag directly rather than looking it up
    omit d218534d47 Let an image call the classes that extend types Groovy did not declare
    omit a650c42087 Inherit no search location while code is being generated
    omit 32e3467b64 Leave the Hibernate datastore's configuration to be read where it runs too
    omit 07273ed9e1 Answer where the application runs, not where it was built, for GSP
    omit c250a955da Let a plugin declare its beans from inside an image
    omit ee481ed207 Cover the two ahead-of-time processors contributing to one bean
    omit d2ad00cc77 Do not add a second processor for configuration classes
    omit b70873614e Keep the bean definitions that were generated ahead of time
    omit 36d20d1127 Leave a datastore's configuration to be read where the application runs
    omit 2885d88f72 Gather a variable-argument constructor argument into the array it feeds
    omit 3e0a6fe23e Contribute tag library definitions without replacing what is registered
    omit b1611e36ab Carry a bean's injection into the code generated for it
    omit 79504824fd Generate the Groovy compiler config script in its own task
    omit 724a270dc4 Offer only the backends whose library is present
    omit 22c100bdb2 Expand scaffolded views only where a controller is scaffolded
    omit 3e4fa5c897 Merge pull request #16112 from apache/revert-15824-fix/14915-beanbuilder-spring7
    omit f18fc9af04 Revert "Keep BeanBuilder DSL independent of XML setup"
    omit 71efa807c7 Merge pull request #15824 from apache/fix/14915-beanbuilder-spring7
    omit ac94b25e81 Merge pull request #15812 from apache/fix/forge-oauth-state-validation
    omit 0c78c458fc Merge pull request #15339 from sanjana2505006/feature/15007-mongodb-testing-forge
    omit 29053d5f2d Follow the configured import order and indentation
    omit e1e3aae3a3 Cover what an application records for an ahead-of-time image
    omit d366841707 Ask one question about which scanned types may be registered
    omit 19bcf52e8c Merge branch '8.0.x' into fix/15374-codec-metaclass-registration-overhead
    omit d92eadc066 Allow concurrent documentation publishing
    omit 322233651c Merge branch '8.0.x' into feature/i18n-boot-message-source-8.0.x
    omit e929338408 Merge pull request #15803 from apache/fix/synchronizer-token-hardening
    omit b9f5c1f17e Merge branch '8.0.x' into fix/15374-codec-metaclass-registration-overhead
    omit f92e2e0cf8 Use the pages compiled at build time in an ahead-of-time image
    omit cf62c7f8d4 Cover mockCodec without lookup reinitialization
    omit ab63e4e5c0 Cover codec lookup lifecycle initialization
    omit 09b037af96 Remove the ad hoc codec benchmark
    omit 59f9b22e7b Preserve codec metaclass registration contracts
    omit 81ce34460a Register the classes a tag library declares inside itself
    omit 1007b5fe1a Match Spring Boot nested property semantics
    omit 959af4200f Merge pull request #16109 from apache/merge-back-7.1.5
    omit a5ed183758 Align Groovy configuration metadata inference
    omit fa8e4e4fc1 Register the rendering, scaffolding and persistence runtimes
    omit ed463e9fe3 [skip ci] Bump version to 7.1.6-SNAPSHOT
    omit 4991ae9f5e Keep the configuration metadata compiler internal
    omit 4f55e5bb6d Preserve configuration metadata identities
    omit b3686d66b1 Document generated Views configuration metadata
    omit 3a1c22281d Correct the removed-settings table in the i18n upgrade section
    omit 42c903f451 Merge pull request #16108 from apache/merge-back-7.2.2
    omit 93fd522fb6 Merge pull request #16038 from apache/dependabot/github_actions/codecov/codecov-action-7.0.0
    omit 05cfc88fb2 [skip ci] Bump version to 7.2.3-SNAPSHOT
    omit 69fbd65156 Merge branch '8.0.x' into feat/virtual-thread-promise-factory-seed
    omit a1e526fd02 Merge branch '8.0.x' into fix/forge-oauth-state-validation
    omit 95d2232e9e Merge pull request #15711 from apache/dependabot/github_actions/release-drafter/release-drafter-693d20e7c1ce1a81d3a41962f85914253b518449
    omit 674a3a375d Merge pull request #16100 from paulk-asert/validateAction
    omit e88612c33c Merge pull request #16106 from apache/merge-back-8.0.0-M5
    omit c989200e71 [skip ci] Bump version to 8.0.0-SNAPSHOT
    omit bcb05afdee Merge branch 'fix/binddata-mass-assignment' into fix/binddata-null-missing-stale-data
    omit b89e6a02dd Merge branch '8.0.x' into fix/binddata-mass-assignment
    omit fe87c67c28 Merge pull request #16105 from apache/merge-back-7.0.15
    omit 8e3df14775 [skip ci] Bump version to 7.0.16-SNAPSHOT
    omit 8c5b1cfdd8 Merge pull request #16099 from paulk-asert/dependabotCooldown
    omit 388e5af89e build: change sbom logging to info
    omit ae1a390db5 build: cleanup SLF4J warnings in the build output
    omit 842ce6f07b Record an application's own classes and pages for ahead-of-time images
    omit 3b3537d154 Register the framework's closures for ahead-of-time images
    omit 55b7dcc425 Register the request path's reflective API for ahead-of-time images
    omit 15c93f2d7c build(refactor): replace deprecated Gradle test listener creation
    omit 1c8d8c1da3 Point i18n build failures at the upgrade guide and document Grails 7 compatibility
    omit df347f19fa Expand scaffolded views at build time
    omit 69ed46edca Merge binding security updates into nullMissing work
    omit 6ef6f85f16 Honour grails.i18n.cache.seconds as a deprecated upgrade aid
    omit 075c648872 Add the license header to the AOT example configuration
    omit 3206f60554 Read the Spring Security version without nested reflection
    omit 067edabbde Cover plugin message bundles end to end for a multi-word plugin name
    omit 227d74695e Register the GORM event publisher as a bean definition
    omit 21e715ce3d Address data binding review feedback
    omit 0f05805416 Restore automatic i18n reload and cover the Gradle integration functionally
    omit 37357a8057 Document the language-selector and AvailableLocaleResolver changes in the upgrade guide
    omit d4403dec66 Update the locale-selector docs for the unified include-plugin-bundles key
    omit f9ec1aa2cd Fix checkstyle and codenarc violations in the new i18n sources
    omit cd601c7755 Add i18n descriptor tests, docs and configuration metadata
    omit a330f176fa port validate-actions GitHub action from Groovy to Grails
    omit 37db67f0cb Move i18n onto Spring Boot's MessageSource
    omit 22c45df65a Align JMH workflow with pull request execution
    omit d8c90360f3 change cooldown for dependabot to 7 days
    omit 74587e2906 Merge origin/8.0.x into feature/automated-configuration-metadata
    omit 5429ab7669 Guard GSP parser benchmark fixtures
    omit 8624c28d99 Harden JMH benchmark comment updates
    omit 90eded54b2 Preserve JMH mode in benchmark reports
    omit b8d3233184 Isolate JMH report tests from benchmark fixtures
    omit 7c10347322 Expand configuration metadata transform coverage
    omit 3de06ee544 Merge pull request #16083 from apache/docs/gradle-developer-skill
    omit e4d26c5d6d docs: polish gradle-developer skill with cacheability and monorepo lessons
    omit 0ea98a1a07 docs: register gradle-developer skill in AGENTS.md
    omit 35b1f70801 docs: add Gradle 9 developer skill for monorepo builds
    omit 9cd1bde916 Merge branch 'fix/binddata-mass-assignment' into fix/binddata-null-missing-stale-data
    omit 23625ea24c Merge branch '8.0.x' into fix/binddata-mass-assignment
    omit 948775bcb4 Merge pull request #16089 from codeconsole/fix/directory-watcher-fallback-8.0.x
    omit 3941a0cec9 Revert "Fix full stack trace output when System.err changes"
    omit c96bcb331a Merge branch '8.0.x' into use-spring-upload-config
    omit 9c8cd61e70 Merge branch 'apache:8.0.x' into 8.0.x
    omit cf2e542e50 Fix full stack trace output when System.err changes
    omit 8ac14e97a5 chore: remove test dependencies as there are no tests
    omit ae3c52c65f chore: remove decommissioned code and its dependencies
    omit cfaa324d76 Address review: keep production external, only reuse our own server, document
    omit bc537807e3 Document ahead-of-time processing and cover it with tests
    omit fff5f3e91c Start an embedded MongoDB so generated apps run without one installed
    omit b3811adb75 Let the container supply the SiteMesh view resolver's servlet context
    omit 38e941fecd Keep abstract bean definitions out of AOT processing
    omit ff515d199a Do not add a ConfigurationClassPostProcessor to an AOT context
    omit d593bd2bbf Register the GSP codecs settings and servlet without live instances
    omit ab2b2afb3e Warn when native macOS file watching is unavailable
    omit 7cd616519b Require macOS for the native watcher test
    omit 641849abb6 Assert watcher behaviour rather than the implementation selected
    omit bd7ef514fc Merge branch '8.0.x' into fix/15374-codec-metaclass-registration-overhead
    omit 7e08fa926a Key codec metaclass registration by Class and lock per factory
    omit 4bc5bd8233 Merge pull request #16087 from apache/impr-gradle-conf-time-2
    omit b37a11c061 Avoid double codec registration at startup and in mockCodec
    omit 202d206a6a Address JMH PR review feedback on workflow, guards, and tooling
    omit 48d528d95f Merge branch '8.0.x' into fix/directory-watcher-fallback-8.0.x
    omit 40272535a4 Treat a linkage failure as the native watcher being unavailable
    omit 6378d2daed Merge pull request #16019 from codeconsole/spike/grails-beans-dsl
    omit c3c9b4986d Address review: correct the Application beans docs and drop a redundant comment
    omit b86d50422c Merge pull request #16091 from apache/post-8.0.0-M5-release
    omit 783b1ec36c Give every Grails 8 upgrade section a distinct number
    omit e655aaae65 Merge branch '8.0.x' into fix/15374-codec-metaclass-registration-overhead
    omit 022465ee3c Merge branch '8.0.x' into spike/grails-beans-dsl
    omit afabbc5c2a Merge remote-tracking branch 'origin/8.0.x' into apache/fix/14915-beanbuilder-spring7
    omit fe1827cf67 Merge pull request #16090 from apache/backport-15978
    omit 3603e6919b Merge pull request #16088 from codeconsole/refactor/remove-gspcompile-configuration
    omit 15d7cfaa2e Merge pull request #16075 from codeconsole/fix/gradle10-plugin-deprecations-8.0.x
    omit de314a0557 Fix reproducible build artifact verification
    omit 0e0f815e23 backport: reproducability fix
    omit 80bf683305 Remove the vestigial gspCompile configuration
    omit 5aa26db4c4 Fall back to the WatchService watcher instead of polling
    omit ccee98a603 Merge branch '8.0.x' into spike/grails-beans-dsl
    omit 063ca5266c Merge pull request #16068 from codeconsole/fix/gspcompile-bom-managed-servlet-api
    omit 8009781474 [skip ci] Release v7.1.5
    omit 8c6476c17e [skip ci] Release v7.0.15
    omit b4b29e10f2 [skip ci] Release v7.2.2
    omit 5784450e7e [skip ci] Release v8.0.0-M5
    omit 50714be10c Keep Grails-managed domain properties bindable when opted in
    omit 2b53efd370 Fix domain binding spec cleanup lifecycle
    omit dc719ce099 Extract nullMissing property clearing
    omit cbfd385d3b Consolidate framework-managed data binding properties
    omit 1f566947cc Merge branch 'fix/binddata-mass-assignment' into fix/binddata-null-missing-stale-data
    omit ea59fc5192 Merge branch '8.0.x' into fix/gspcompile-bom-managed-servlet-api
    omit 73a0555772 Address jdaugherty review feedback for opt-in secure binding
    omit 3d129b7140 Merge pull request #16082 from apache/fix/move-plugin-scripts-to-cli-companion
    omit 7242de2e8d Declare the servlet API on grails-web-gsp and document gspCompile
    omit 4cb7c85650 build: do not cache project references
    omit f0425e8f59 Merge pull request #16078 from jdaugherty/fix/legacy-jansi
    omit cdedbb2ff3 Merge branch '8.0.x' into fix/binddata-mass-assignment
    omit 492b3c5aef Merge branch '8.0.x' into fix/move-plugin-scripts-to-cli-companion
    omit 82ebbd775e fix: keep plugin templates out of the processResources filters
    omit 299d7f2008 Merge branch '7.1.x' into 7.2.x
    omit cebe9c687b Merge pull request #16084 from apache/fix/bnd-annotation-7.1.x
    omit 87a359ff50 fix(deps): Manage bnd.annotation 7.1.0 for Log4j 2.25.5
    omit 485ca0f58a Merge pull request #16069 from apache/improve-gradle-conf-time
    omit 54f68ca62e Merge pull request #16077 from apache/fix/spring-dm-example
    omit a24136bab2 Skip project platform dependencies when detecting declared BOMs
    omit 884a7e9b59 Do not cache end to end tests since Gradle caching may skip them as already ran
    omit 4fd62d9133 Merge pull request #16044 from apache/deps/cve-log4j-jansi-8.0.x
    omit 03999f46d9 Merge remote-tracking branch 'origin/8.0.x' into deps/cve-log4j-jansi-8.0.x
    omit 34232aad4a Merge branch '8.0.x' into fix/legacy-jansi
    omit b9c162fefa Move dependency version validation into a task class
    omit 5e524570dc Merge pull request #16080 from apache/deps/groovy-5.0.8-8.0.x
    omit 4dc7e3030d Merge branch '7.2.x' into 8.0.x
    omit 36f1ea2402 Address review feedback on the CLI test tier and classpath validator
    omit 0dcca32984 build: cache the funtional test dependency substitutions
    omit e184cb5a63 Remove jlineVersion property and use version from dependencies.gradle
    omit f77f0cadef fix: unique Copy outputs for plugin commands (no Sync/filter)
    omit 8c56112191 Merge branch '7.1.x' into 7.2.x
    omit fa45c9c309 Merge branch '7.0.x' into 7.1.x
    omit 0055d02ae9 Fix defects in the jansi removal and CLI classpath split
    omit 2bd0199970 fix: type copyTemplates as Sync in spring-security-ui
    omit 7a3049d707 fix: use unique Sync outputs for plugin command packaging
    omit a35474f878 Merge pull request #16081 from apache/deps/groovy-4.0.33-7.0.x
    omit 55db8cc7e2 fix: route plugin src/main/scripts into companion -cli jars
    omit e510a627a1 Merge branch '8.0.x' into perf/8.0.x-jmh-pr-benchmarks
    omit e04c9022ba Replace Python JMH comparison tooling with Groovy
    omit 34f6a1942b docs: Point Groovy 5 doc links at the version selector
    omit d9c79260b5 docs: Point Groovy 4 doc links at the version selector
    omit 3f182609cf fix(deps): Bump Gradle/Forge Groovy toolchain to 4.0.33
    omit 67b98cd894 fix: import log4j-bom before Spring Boot in published BOMs
    omit 4b15e03e6a fix(deps): Bump Groovy to 4.0.33
    omit 9eec0587fd fix(deps): Bump Groovy to 5.0.8
    omit 59ec123ecd Merge branch 'fix/binddata-mass-assignment' into fix/binddata-null-missing-stale-data
    omit cd4202bfa7 Merge branch '8.0.x' into fix/binddata-mass-assignment
    omit a5da57bacf Split tests for cli into their own classpath, enforce cli dependencies as separate from the production classpath, and remove the need for the legacy jansi library
    omit be8a83bb08 Replace fusesource jansi with org.jline's fork
    omit cefc061d34 Isolate mavenBom import requirements into a separate project so the code being built is the code being tested
    omit 2e2ce06e9f Merge pull request #16074 from apache/issues-16060-Upgrade-docs-mixed-up-version-numbers
    omit 457f2fb86d Merge pull request #16076 from codeconsole/fix/eager-classpath-resolve-8.0.x
    omit 3811fcefc7 Poll ProcessHandle.isAlive(), not Process.isAlive(), in the reaper-lag fix
    omit d4945dba74 chore: add comment and clearer variable names
    omit a42b48780f Address review: drop breaking trait fixtures, isolate remaining shared test entities
    omit 4fdb88b163 fix: defer compile-classpath probes out of GroovyCompile task configuration
    omit 308857cd77 fix: replace Gradle APIs deprecated for removal in Gradle 10
    omit ebe66140cf Fix: Add urlencoding to link to Grails BOM in docs
    omit 5d024d71b9 Issues #16060 Docs: Mixed-up version numbers
    omit ea9d6a63ce Add opt-in Forge feature for MongoDB testing support.
    omit 9f18a77067 Cover the relaxed-boolean path that motivated the cache fix
    omit c3a4d9235b Close a real synchronization gap found by adversarial self-review
    omit 078ac9da53 Address review: cache per-ClassNode instead of a static map, close test gaps
    omit 8885e6f7a8 fix: preserve full transaction attribute state in GrailsTransactionAttribute copy constructors
    omit a1594a541e fix: preserve full transaction attribute state in CustomizableRollbackTransactionAttribute copy constructors
    omit 87e23d42b1 fix: preserve full transaction attribute state in GrailsTransactionAttribute copy constructors
    omit 7d90d67932 Merge remote-tracking branch 'origin/spike/grails-beans-dsl' into spike/grails-beans-dsl
    omit 4e51a2556a Document the component-scan behaviour change, and drop @GrailsBeans to CLASS retention
    omit 33c9ee771d Key the cache plugin's startup hook on what actually registered
    omit f31d57061f Stop claiming a Groovy class constant does not fold
    omit a4deb3d2cd Locate two errors that were reported against nothing, or against the wrong thing
    omit ed2db8a1af Close JMH metadata stream and run comparison tests in CI
    omit e801ffb403 Add JMH performance regression reporting for pull requests
    omit 297767a923 Merge branch '8.0.x' into spike/grails-beans-dsl
    omit cc6bdf429c Source ASM's version from the build-tooling version map
    omit df12ea261e Merge branch '8.0.x' into fix/gspcompile-bom-managed-servlet-api
    omit 1410710809 Read @AutoConfiguration from class files instead of loading them
    omit 57883c41e4 build: allow excluding the Spring DM example on an unpublished branch version
    omit aba633bdf2 Remove the hardcoded servlet API dependency from gspCompile
    omit 8009c21a64 Correct two stale limitations in the DSL documentation
    omit cc471e4f48 build: improve project dependency substitution logic in functional test configuration
    omit 9f0b4d5f7b Use the concise bean forms in the DSL example module
    omit e09d4ef4e8 Wrap overlong source lines
    omit 9796eb104a Prove the parameter @Qualifier through real Spring injection
    omit d8f2a7b78b Let an empty bean closure body mean "construct from these parameters"
    omit 1fe013a1c6 Declare the constraint evaluator's parameters in constructor order
    omit a8227fdbbb fix: convert GrailsExceptionResolverSpec to LogCapture, remove last System.err capture
    omit 27d86820be fix: capture STACK_LOG output via a Logback appender instead of System.err
    omit 301b40c20a Merge pull request #16011 from apache/feat/8.0.x-legacy-command-compat
    omit 0067d15e23 Correct the beans DSL documentation
    omit af64be699c Use the Settings constants, and name the sibling correctly
    omit 94e25dee20 Only claim a beans property that looks like the DSL
    omit 0224df0ecd Move the beans DSL examples under grails-test-examples
    omit 138d014236 Declare the beans DSL once, and give it its own group
    omit 62b74b9a3f Fix the imports generator and give it a real consumer
    omit bfa1f8e676 Remove unused Forge GitHub create and OAuth integration
    omit 9743d3a54e Fix eight defects in the beans DSL transform
    omit 5525000e0f Merge branch '8.0.x' into spike/grails-beans-dsl
    omit c47fb1ebdb Merge branch '8.0.x' into fix/14915-beanbuilder-spring7
    omit 66a25164f3 Merge pull request #15757 from codeconsole/remove-skeleton-logback-spring-xml
    omit bdb98a6636 test: capture StackTrace filterer emissions via LogCapture
    omit ed1961adfc test: capture application command diagnostics from logger
    omit 08121444e3 chore: add license header to end-to-end properties
    omit d5335f4a9e Merge branch '8.0.x' into fix/binddata-mass-assignment
    omit b5d87ae5ea Merge branch '8.0.x' into feat/8.0.x-legacy-command-compat
    omit e1b93a6927 Merge pull request #16059 from jdaugherty/test/8.0.x-legacy-command-e2e
    omit 5ecdafc2b3 Merge branch '8.0.x' into use-spring-upload-config
    omit 08bf7818e2 Drop the bindable constraints added to the renderer spec models
    omit 4c9062e77b Resolve legacyBindableDefault from the raw configuration value
    omit f55731a748 Merge pull request #16042 from apache/refactor-global-injector-trans
    omit 1ed1a30a04 Move legacy command compatibility tests into an end-to-end build
    omit 87d9eb40e6 Merge pull request #15666 from codeconsole/7.1.x-grailsutil-honor-filterer-config
    omit 2781979e92 Merge pull request #16062 from apache/dependabot/github_actions/testlens-app/setup-testlens-1.9.3
    omit 62d4aadc22 Merge branch 'fix/binddata-mass-assignment' into fix/binddata-null-missing-stale-data
    omit 3307fb44e9 Merge pull request #16045 from apache/deps/align-log4j-boms-7.0.x
    omit 2bf0cf01f8 Merge pull request #16055 from gsartori/groovy-developer-ternary-operator
    omit fc002544f4 Merge branch 'apache:8.0.x' into 8.0.x
    omit 22866b7dfb Merge pull request #16041 from apache/fix/7.0.x-dbmigration-bootwar-npe-15377
    omit e0e7dd3f2a Added ternary operator formatting in the groovy-developer skill
    omit c083ad1844 fix: refresh plugin metadata without new artefacts
    omit ec9a530c7d fix: skip plugin XML generation after validation failure
    omit b5a15be028 test: improve test isolation and clarity by resetting trait injectors in setup and cleanup
    omit f924d0c9d7 docs: clarify plugin XML update failure handling
    omit a72fa18d3e style: re-order methods more logically
    omit 945b185a17 chore: clarify logback-classic dependency in test fixtures
    omit b341dc5b75 fix: make Grails version fallback coverage deterministic
    omit 7587013983 refactor: clarify plugin XML update helper names
    omit fd87c31e28 fix: clarify nullable contracts
    omit d1c8d0e439 test: add deterministic test logging configuration
    omit 09c42aebe4 Bump testlens-app/setup-testlens from 1.9.2 to 1.9.3
    omit aba16ce46a fix: LogCapture improvements
    omit a55d2ad186 refactor: move LogCapture to textFixtures source set
    omit fbc9c6ee81 fix: omit unavailable Grails version from plugin metadata
    omit d86a6957e9 fix: defer resources when malformed plugin descriptor lacks metadata
    omit bad541ba13 fix: correct error generation in ast transform
    omit 7bcab161f3 fix: logic to handle plugin excludes over source units
    omit f1fbe86956 Merge pull request #15971 from apache/feat/gorm-query-safety-ast-check
    omit 8ef28e0a43 Merge pull request #15802 from apache/dependabot/gradle/grails-forge/7.0.x/com.gradle.develocity-4.5.0
    omit c3b60c8c01 test: add more coverage
    omit 48e38bb1a0 refactor: extract test log capturing to reusable class
    omit 4fe23d49c0 refactor: another iteration after feedback
    omit cdad075730 refactor: make pending lists an internal instance concern
    omit 8fe145514c refactor: enhance plugin XML generation and improve error handling
    omit c4bbf11593 build: whitespace
    omit 43366f1f73 test: existing resource when testing `grails-plugin.xml` update
    omit 300b01f885 test: align on using log appender in tests and some cleanup
    omit ba07ad5591 Merge remote-tracking branch 'origin/use-spring-upload-config' into use-spring-upload-config
    omit 1de6ba4739 Reintroduced camelCase for multipart properties to keep consistency with Grails config
    omit ab0c2befcb Cleanups: Update legacy maxFileSize
    omit c14c0d9707 Upgrade guide
    omit 925ffc845e Implemented @matrei feedback
    omit 8f9c9f8b71 Merge branch 'apache:8.0.x' into 8.0.x
    omit 0ff942e6b0 Merge remote-tracking branch 'origin/use-spring-upload-config' into use-spring-upload-config
    omit 43c1b91cdd Reintroduced camelCase for multipart properties to keep consistency with Grails config
    omit 5e90de8495 Cleanups: Update legacy maxFileSize
    omit 984e7c8abf Upgrade guide
    omit 8b634512ac Implemented @matrei feedback
    omit 722040412b refactor: minor
    omit 7b35c0f4b0 fix: do not use `getClass()` in static method
    omit eb90eb5c77 test: verify log warning on existing malformed plugin xml file
    omit a70ff87f1f Register the abstract resource locator without doWithSpring
    omit 637b7affc6 Move CoreGrailsPlugin's bean definitions out of doWithSpring
    omit 4000654c8e Address borinquenkid review: log the wrong-type filterer fallback
    omit 48b2bfb1e5 Contribute the bean-packages scan through beanRegistrar
    omit 0161f9dcbe Fix component scanning outside the project directory
    omit 29305023f4 Drop the dead GrailsConfigurationAware contract from GrailsPlaceholderConfigurer
    omit 1544bd7d19 Contribute the auto-timestamp cache default to the environment
    omit da28b4f1e9 Move the SiteMesh 3 mutator into the DSL and fix its environment post-processor
    omit 1346b27b2b Move the cache plugin fully onto auto-configuration
    omit 1af34ee7f0 Drop @GrailsBeans from the plugin descriptors that no longer need it
    omit 5a4e2b8c21 Compile a beans property without requiring @GrailsBeans
    omit 6a71fa5ef6 Merge branch '8.0.x' into spike/grails-beans-dsl
    omit 80e526a087 Treat an empty beans block as a no-op
    omit 285168ddf8 Show the bodyless bean form in the application-class documentation
    omit f4410fd5c0 Use tap for the source registry and wrap the long url-mapping chains
    omit 3cd34975cd Fix VirtualThreadPromiseFactory type-safety bug; drop GPars deprecation language
    omit 3b8b35feaf Replace string assertions with Jsoup DOM parsing per review discussion
    omit 350bb9891a Collapse the remaining bare-construction beans onto bodyless bean(Type)
    omit cd1639f850 Use idiomatic array concatenation in the data binder bean
    omit bab7b058f3 Drop redundant explicit bean names from the converted plugins
    omit 6fe91a2519 Collapse the databinding source creators onto bodyless bean(Type)
    omit 4dab384019 Allow bean(Type) with no factory closure
    omit 623ce9748d Convert DataBindingConfiguration to a @GrailsBeans block on DataBindingGrailsPlugin
    omit 9e73262146 Address review feedback on plugin dependency diagnostics
    omit 700cf9c329 Convert GrailsDomainClassAutoConfiguration to a @GrailsBeans block on DomainClassGrailsPlugin
    omit 311fb9a959 Convert GrailsCacheAutoConfiguration to a @GrailsBeans block on CacheGrailsPlugin
    omit 3c5b1b9045 Merge pull request #16053 from codeconsole/locale-autonym-titlecase
    omit 8ec2dad08d Merge branch '8.0.x' into refactor-global-injector-trans
    omit 17d78a74e4 Merge pull request #16056 from apache/try-fix-dependencies
    omit 87ce649d52 build: try to fix dependency resolution after merge-up
    omit 4267e77b2f test: reset static collections in cleanup()
    omit b32e9d1907 Merge branch '8.0.x' into refactor-global-injector-trans
    omit 7860ec1d19 test: add more coverage for `GlobalGrailsClassInjectorTransformation`
    omit 31875ec0a1 another iteration after review feedback
    omit 63048d463e Merge branch '7.2.x' into 8.0.x
    omit 95c0db6d4a Merge branch '7.1.x' into 7.2.x
    omit 6e463ae14b Merge branch '7.0.x' into 7.1.x
    omit b8df2131e9 Remove push trigger due to api limits
    omit d47aedc00a Merge branch 'apache:8.0.x' into 8.0.x
    omit a360262fa7 Reintroduced camelCase for multipart properties to keep consistency with Grails config
    omit 100b9dbf77 Apply the configured Spring placeholder prefix
    omit 6986f0cc12 Convert CoreAutoConfiguration to a @GrailsBeans block on CoreGrailsPlugin
    omit 2d617df10c Fix the actual reaper-thread flake in RunningApplicationProcessSpec
    omit 70f875107e Close a real branch-coverage gap for HibernateCustomProperty
    omit c7f4f4e5c8 Replace indirect GrailsPropertyBinder guard with self-encapsulation
    omit 607ae4e64c Strengthen EnumHasManyDdlSpec assertions and coverage
    omit 5e05828651 Fix hasMany-of-enum cascade regression and self-encapsulate to-many cascade rules
    omit cbfe2fc8e9 Address review: Class-valued filterer config, ClassLoader, defensiveness
    omit 4db83b3436 test: remove redundant javadoc
    omit 5c71d9e88c Merge branch '8.0.x' into spike/grails-beans-dsl
    omit 1c34ff0791 Address review feedback on databinding whitelist characterization spec
    omit 7e0316c71c localeSelect: keep the current query string when switching language
    omit b2b92f34cd localeSelect: add type="dropdown" and a menu-cased name, and titlecase autonyms
    omit 98a1acf30b Fix DDL failure for hasMany collections of enums
    omit 528a41b9ba Bump github/codeql-action init and analyze together to v4.37.3
    omit 5e9ce015d9 Add tests closing codecov gaps in GlobalGrailsClassInjectorTransformation
    omit 743730dc3b Merge pull request #16049 from apache/merge-back-8.0.0-M4
    omit b11fa75cb2 [skip ci] Bump version to 8.0.0-SNAPSHOT
    omit 7d17c3ac4e Polish the converted bean bodies with Groovy idioms
    omit 203a8ae9d9 Use tap for the mail sender's conditional configuration
    omit 483d9a543c Simplify the mail sender's nested host/encoding defaults
    omit 8ce848237d Cover the enabled JNDI path and qualified session injection in MailAutoConfigurationSpec
    omit 6e4a52013d Convert MailAutoConfiguration to a @GrailsBeans block on MailGrailsPlugin
    omit 53dcb874db Convert Sitemesh3AutoConfiguration to a @GrailsBeans block on Sitemesh3GrailsPlugin
    omit 5450dffcfe Add bean(...).staticMethod(): a static @Bean factory method
    omit 03209d1209 Cover the migrated grailsLinkGenerator behavior in UrlMappingsAutoConfigurationSpec
    omit 776985dd80 Reject a blank config key in .value(...)
    omit 5e9e162e99 Convert UrlMappingsAutoConfiguration to a @GrailsBeans block on UrlMappingsGrailsPlugin
    omit 32ead2bbc4 Auto-wrap a bare config key given to single-argument .value(...)
    omit 855a28347d Document @GrailsBeans for applications, including the Application class
    omit 48d352fadf Allow one bean name across several bean(...) statements when each carries a discriminating condition
    omit 19a502c420 Flip the DSL argument order to name-first: bean('name', Type), field('name', Type), method('name', Type)
    omit d12545ae42 Generate metadata for Groovy configuration DSLs
    omit b792a3fd1c Support immutable configuration metadata
    omit 41433386f1 Document automated configuration metadata
    omit 5983be36b0 Include generated metadata in configuration reference
    omit ccc41535b2 Generate URL mappings configuration metadata
    omit 97821d6e71 Generate Markup Views configuration metadata
    omit d26dc7c206 Generate JSON Views configuration metadata
    omit 39d95bbfe1 Generate data binding configuration metadata
    omit fe8725ac5c Generate cache configuration metadata
    omit 75ed39351b Harden legacy command compatibility diagnostics
    omit fa90c2ca54 Add configuration metadata Gradle plugin
    omit ce1438021a Add configuration metadata compiler
    omit 2f9e4e5349 Cleanups: Update legacy maxFileSize
    omit b255caadbc Upgrade guide
    omit cb3a5753c7 Detect inline .toString()/cast flattening at the GORM query call site
    omit 811faed161 Align Log4j across published BOMs
    omit 0702d7bb88 Merge branch '8.0.x' into 7.1.x-grailsutil-honor-filterer-config
    omit 98b046b946 Merge branch '8.0.x' into spike/grails-beans-dsl
    omit 116b0efab3 Default legacyCommandSupport to false (opt-in Grails 7 bridge)
    omit b821683c51 Fold .value(...) placeholders at transform time; compile I18nGrailsPlugin with @CompileStatic
    omit 2306135aa2 Reject types given both positionally and via value: on conditionalOnMissingBean; fix stale method(...) chaining docs
    omit 6148123389 Add .conditionalOnMissingBeanName(...): name-based self-back-off stated once
    omit b936793fde Apply the new DSL conveniences to the real i18n conversion
    omit 07e89bbde0 Groovy-fy the beans DSL: suffix-derived sibling names, richer conditionalOnMissingBean, field .value(...)
    omit ac08770cff Merge pull request #16043 from apache/deps/cve-log4j-jansi-7.0.x
    omit e0f8d13f16 Consolidate comments that restated each other or nearby documentation
    omit 2ff9ebcda5 Reserve the accessor names Groovy will synthesize for properties
    omit 23c2c586af Update Log4j to 2.25.5 and document unfixed Jansi CVE
    omit 21f69f9210 Traverse the full interface graph when reserving existing member names
    omit c41c33b2b1 Reserve existing host and hierarchy member names before choosing generated names
    omit 31feae1ed2 Make bean/member name-collision handling independent of declaration order
    omit a019de05f3 Remove .methodName(...) from the DSL: generated method names are an implementation detail
    omit b9063a78ed Rename .methodNamed to .methodName; auto-move @ComponentScan/@PropertySources; add moveAnnotations escape hatch
    omit dde9f33b67 Keep localeChangeInterceptor's explicit bean name; verify beforeName ordering and availableLocaleResolver's derived name
    omit faf14de109 Reject blank/reserved-keyword names, add ImportResource to the sibling-move list, and rename .named(...) to .methodNamed(...)
    omit 07242bf9bf Merge remote-tracking branch 'upstream/8.0.x' into remove-skeleton-logback-spring-xml
    omit bdb6b63a2b Drop the redundant explicit bean names that just repeated the convention-derived one
    omit 3a07ad21f3 Implemented @matrei feedback
    omit 98089e5552 Make .named(...) optional: fall back to a synthesized <type>$N method name instead of a compile error
    omit 471008b6d2 Add bean(...).named(...) so a bean name that isn't a valid Java identifier can still be expressed
    omit 48d4af2cb9 Complete the I18nAutoConfiguration identity restoration (previous commit only carried the file rename)
    omit 32b0e06e5c Use autoConfigurationName to preserve I18nAutoConfiguration's identity through the @GrailsBeans conversion
    omit 1d8edac99e Fix CodeNarc style in legacy command compatibility layer
    omit 6806043b23 Fix the bean-name-limitation workaround: it doesn't apply to the Plugin-subclass form
    omit b36edf3fa8 Document the full sibling-annotation move, composed annotations, autoConfigurationName, and the bean-name-is-a-Java-identifier limitation
    omit 959fa3df34 Reject autoConfigurationName on a standalone class, where it silently had no effect
    omit ec5f8e52ac Address a second review: recurse through composed condition/import annotations, add @GrailsBeans(autoConfigurationName = ...)
    omit 12fa9dfd06 Document field()/method()/.primary()/.lazy()/.scope()/.annotate() and sibling-annotation-move on @GrailsBeans
    omit c038c985c3 Address review: propagate Conditional*/Import* annotations to the generated sibling, fix acronym decapitalization, reject duplicate bean/field/method names
    omit 3587ed6478 Prove Grails 7 Groovy 4 precompiled application-command compatibility
    omit cd6cbb81bb Stop inventing named Gradle tasks for legacy application commands
    omit 8c35ae1e56 Split a merged comment back into its two original topics
    omit 5db496701c refactor: clean up GlobalGrailsClassInjectorTransformation
    omit dc07794825 Remove unnecessary method() indirection from the i18n conversion
    omit c798c93778 Add default-on legacyCommandSupport flag beside cliAutoProvision
    omit 4a7af94651 Add positive-path coverage and tidy manifest test data (#15377)
    omit d700945343 Fix bootWar NPE from stray CLI WebApplicationInitializer (#15377)
    omit d64cef31ad Merge origin/8.0.x into feat/8.0.x-legacy-command-compat
    omit ce6c4e5f7f Merge branch 'apache:8.0.x' into 8.0.x
    omit 4242d6b39c Bump codecov/codecov-action from 6.0.0 to 7.0.0
    omit f1bdc751b3 test: add bindable constraints for model properties in HalJsonRenderer and JsonRenderer specs
    omit e4f92b1eab Use the real Settings constants for @Value keys in the i18n conversion
    omit 6385b338be Convert the real grails-i18n autoconfiguration to @GrailsBeans
    omit c6ce3fe8bd Merge pull request #16004 from apache/test/plugin-registry-contract
    omit 0b53a85ae4 Use find/count for null-safe plugin lookup in registry contract spec
    omit 1817a7d7b4 Merge pull request #15991 from apache/build/empty-catch-codenarc
    omit 8a4a6eba39 Fix flaky grails-views-gson tests caused by shared static test state
    omit 4e7cd8762f Address review feedback on EmptyCatchBlock PR
    omit 33efc93093 Merge remote-tracking branch 'origin/8.0.x' into build/empty-catch-codenarc
    omit 2d08123daf Merge pull request #15999 from apache/docs/continuous-testing
    omit f3da7a2312 Merge pull request #15997 from apache/docs/structured-logging
    omit e7bad9c74a Merge pull request #15996 from apache/docs/http-exchange-clients
    omit 620f651fed Fix flaky WhereQueryClosureCaptureSpec: key AstPropertyResolveUtils cache by ClassNode identity
    omit e71d9fad23 Fix flaky RunningApplicationProcessSpec stop timeout
    omit 4dea95c048 Add field(...) and method(...) to the beans DSL
    omit 4cf0a7ab11 Add a generic annotate(...) qualifier to the beans DSL
    omit b711dd5bcc test: address review feedback on numeric precision fix
    omit cb35496301 [skip ci] Release v8.0.0-M4
    omit 6d1acaddb6 Fix help resolution & speed up dependency resolution
    omit d5c7d2d017 Correct inaccurate claim about per-bean Spring conditionals in docs
    omit 4d3107d841 Merge pull request #16013 from apache/update-codestyle-libs
    omit 8d92089b38 test(grails-data-hibernate7): re-enable Oracle in the RLikeHibernate7Spec dialect matrix
    omit 43c6d17dcf fix(grails-data-hibernate7): stop conflating decimal and bit precision for numeric columns
    omit ff2241926c Add primary(), lazy(), and scope(...) qualifiers to the beans DSL
    omit bfd17896e9 Fix task resolution in grails wrapper cli
    omit 360bc4306e Document @GrailsBeans DSL limitations
    omit 48ed0fa86c Statically compile generated GrailsBeans plugin siblings
    omit d1ca11fc66 Merge fixes & cleanups
    omit bfdbbe88fa PR for: https://github.com/apache/grails-core/issues/15644
    omit fa30af085b Fix sbom exemptions for cli split
    omit 0e16a24661 Merge pull request #16022 from apache/cleanup-build-log
    omit a162ebb524 build: change logger level from lifecycle to info for sourcesJar task creation
    omit dfebb9a261 Add sbom verification to verify
    omit a98e197add Add tests
    omit 6b60b72e13 Rewrite the sbom plugin to handle both the cli + main artifacts lazily
    omit abdd44767d fix grails-core-cli artifact checksums
    omit 79b2f3f158 Address review findings: publishing, static compilation, arg validation, silent failures
    omit c2db0eddb0 Trigger GitHub mergeability recompute (no content change)
    omit 0ed1645459 Verify and document @GrailsBeans compatibility with @CompileStatic
    omit e361649056 Allow @GrailsBeans directly on a *GrailsPlugin.groovy Plugin subclass
    omit 6e0a8bafe0 Adopt @RestoreSystemProperties in GlobalGormQuerySafetyASTTransformationSpec
    omit d3e1ea8485 Add protectSqlInjectionAttacks opt-out for the global query safety check
    omit a8a12d5d5a Add @GrailsBeans: compile a bean-wiring DSL into real @AutoConfiguration classes
    omit c6610c1567 Move stack filterer init to bootstrap phase, address jdaugherty review
    omit a23e03d961 Address review feedback from matrei
    omit 5577618630 GrailsUtil: bootstrap-hook init via GrailsExceptionResolver
    omit 55a45f5871 fix checkstyle ImportOrder: separate spring.beans import group
    omit 52b27dfdc3 GrailsUtil: honor stackTraceFiltererClass and logFullStackTraceOnFilter
    omit 5cea1fbc95 style: codenarc issues after update
    omit e53459c0b5 build: update checkstyle and codenarc versions
    omit 7b53bcc56b Harden legacy command provider: single name resolution and loud linkage failures
    omit d1fe4956a6 Isolate Grails 7 command compat into execution-only grails-core-cli-legacy
    omit 5069bef718 Use @Slf4j annotation for ApplicationContextCommandRegistry logger
    omit be98c6228a Deduplicate legacy command classes across classloaders and fix docs
    omit 71f73fc7a7 Address review feedback and expand backwards-compatibility test coverage
    omit 7831d7dfa2 Merge remote-tracking branch 'origin/8.0.x' into feat/8.0.x-legacy-command-compat
    omit 9a8a9a11dd Restore backwards compatibility for Grails 7 command plugins on Grails 8
    omit 8f2f6cf1e6 Merge pull request #15639 from apache/dependabot/gradle/grails-forge/7.0.x/org.testcontainers-postgresql-1.21.4
    omit 3f378fae04 Merge remote-tracking branch 'upstream/8.0.x' into remove-skeleton-logback-spring-xml
    omit 7eb9a5e98d Merge pull request #15988 from apache/ci/document-publishing-limit
    omit ee4d85d65f Bump org.testcontainers:postgresql in /grails-forge
    omit cceff551fb Extend query safety check with branch-sensitivity fix and two new warnings
    omit 44d5cfafe0 Characterize plugin registry load order and lookup contract
    omit 23f7c46a4e Characterize data-binding allowlist through public binding API
    omit 990a79d48f Merge fix/binddata-mass-assignment into fix/binddata-null-missing-stale-data
    omit 419695afb7 Restore permissive binding default and honor bindable false in all modes
    omit e2ee9746ee Potential fix for pull request finding
    omit 0430ed2d37 Potential fix for pull request finding
    omit 0cd61e1cdd Potential fix for pull request finding
    omit a082291aa9 Rename intentional empty-catch parameters in grails-gradle-model
    omit c10e485773 Document continuous test mode
    omit 136f16d7d1 Document Spring Boot structured logging
    omit 15938592c7 Document Spring HTTP interface clients
    omit 9e30fb08e5 Improve unresolved plugin dependency diagnostics
    omit a1b7309d20 Merge origin/8.0.x into fix/14915-beanbuilder-spring7
    omit 73839891f2 Merge origin/8.0.x into fix/binddata-null-missing-stale-data
    omit 8e042314f3 Merge origin/8.0.x into fix/binddata-mass-assignment
    omit 75f02aaff8 Enable CodeNarc empty catch checks
    omit 018220fb3e Merge deny-by-default binding into nullMissing branch
    omit 56a9b27e90 Bind typed arrays through the allowlist and resolve domain elements
    omit a000d32858 Make data binding deny-by-default to prevent mass assignment
    omit 876db2e1a5 Prevent multiple publishing from running at the same time
    omit 1ffe64ea47 Merge remote-tracking branch 'origin/8.0.x' into fix/synchronizer-token-hardening
    omit a3b910951c Merge remote-tracking branch 'origin/8.0.x' into fix/14915-beanbuilder-spring7
    omit 6ea7998aa1 Resolve inherited bindData allowlist for proxy subclasses
    omit c63d39a8c5 Merge remote-tracking branch 'origin/8.0.x' into fix/binddata-mass-assignment
    omit e72c56bccf Merge pull request #15982 from apache/merge-back-7.2.1
    omit f9e4572136 [skip ci] Bump version to 7.2.2-SNAPSHOT
    omit 0496370184 Merge pull request #15981 from apache/merge-back-7.1.4
    omit ca1def5974 [skip ci] Bump version to 7.1.5-SNAPSHOT
    omit dba8810e50 Merge pull request #15980 from apache/merge-back-7.0.14
    omit c63d23e428 [skip ci] Bump version to 7.0.15-SNAPSHOT
    omit a62acb7a9d Docs: expand config-driven logging coverage in the logging reference
    omit 537614e383 Stop generating logback-spring.xml by default; add opt-in Logback Configuration feature
    omit 8395a4775d Merge branch '8.0.x' into remove-skeleton-logback-spring-xml
    omit 46c4ba2486 Track GString origin through variable aliasing, not just literal coercion
    omit 4aa9a0b51d Add compile-time check for GORM query strings flattened from GString
    omit 2b1902fbc2 Docs: fix logback-spring.xml example and scope zero-config vs generated-file behavior
    omit d2422cdab8 Simplify generated logback-spring.xml: compose Spring Boot defaults, INFO root level
    omit 298cd594ad Keep generating logback-spring.xml by default; make zero-config the opt-in Forge feature
    omit 45968fd538 Merge branch '8.0.x' into remove-skeleton-logback-spring-xml
    omit 19fc2a11d7 Remove jodd-wot from fields tests
    omit 5722a426e5 Add VirtualThreadPromiseFactory seed
    omit 6c85e2be2b Make mass-assignment deny-by-default opt-in for 8.0
    omit 7388284e4f [skip ci] Release v7.2.1
    omit bc80c60f7f [skip ci] Release v7.1.4
    omit c9c3be92a8 [skip ci] Release v7.0.14
    omit 0f1cf52699 Merge 8.0.x into fix/14915-beanbuilder-spring7
    omit 6309f18a1f Add opt-in nullMissing support to bindData for stale-data clearing
    omit ac31469817 Address codec metaclass registration review feedback
    omit c421fbabcc Merge remote-tracking branch 'origin/8.0.x' into fix/15374-codec-metaclass-registration-overhead
    omit 413a4f345b Merge remote-tracking branch 'origin/8.0.x' into fix/15374-codec-metaclass-registration-overhead
    omit 5b3d004648 Merge remote-tracking branch 'origin/8.0.x' into fix/14915-beanbuilder-spring7
    omit 833d3e4d8e Avoid XML reader init for missing namespaces
    omit e2926e0316 Harden bindData against mass assignment
    omit e8f9cf8b49 Bump com.gradle.develocity from 4.2.2 to 4.5.0 in /grails-forge
    omit 994311865b Keep BeanBuilder DSL independent of XML setup
    omit a81a84baaf Track codec registrations by weak factory keys
    omit 4805301d26 Run codec benchmark as opt-in Spock spec
    omit 5130d3c4ac Document synchronizer token consumption and bounds
    omit 880e6b36ab Trim oversized synchronizer token state
    omit f252b430cb Harden synchronizer token consumption
    omit 5311c4cd97 Add codec metaclass registration benchmark
    omit 6e914ccac0 Avoid duplicate cached codec metaclass registration
    omit 3f3732e681 docs: document zero-XML per-environment logging via the environments block
    omit 2fac042396 Merge remote-tracking branch 'apache/8.0.x' into remove-skeleton-logback-spring-xml
    omit ed420b14a8 docs: document logback-spring.xml generation change and Logback Configuration feature
    omit 0eea153db8 feat: add opt-in Logback Configuration feature to Grails Forge
    omit 81e26bed44 Stop generating logback-spring.xml in Grails Forge
    omit 94067b6c1f Remove logback-spring.xml from the app skeleton
    omit 4ac99ab547 Bump release-drafter/release-drafter
    omit 8b138afcad Merge pull request #173 from apache/ci/setup-gradle-v6-basic-cache
    omit 0b5c992a42 ci: tolerate release-drafter create-release failure on pull_request runs
    omit b6698fa203 ci: audit and update GitHub Actions to ASF-approved versions
    omit b6f4f7b38a Merge pull request #171 from apache/pin-workflow-actions-to-approved-hashes
    omit 69e88a20cf Pin GitHub Actions to Apache-approved commit hashes
    omit dc99a06dfe Merge pull request #170 from apache/merge-back-4.0.1
    omit 1337c608d1 [skip ci] Bump version to 4.0.2-SNAPSHOT
    omit ad8513895a [skip ci] Release v4.0.1
    omit 0a0fd9166b Merge pull request #169 from apache/grails7-refresh
    omit bbbac7fcb7 Update project jdk to 17.0.17, update to Grails 7.0.7, & Gradle 8.14.4
    omit 292fd32200 Merge pull request #168 from apache/develocity-apache-org
    omit 21c9d07e3f Update develocity server URL to Apache
    omit 00c388b0f6 [skip ci] more post 4.0.0 release adjustments
    omit cbe1bb0e63 [skip ci] more post 4.0.0 release adjustments
    omit dbc6f6d00f [skip ci] post 4.0.0 release adjustments
    omit 5eb4ad6699 Merge pull request #165 from apache/merge-back-4.0.0
    omit bd5de93765 [skip ci] Bump version to 4.0.1-SNAPSHOT
    omit 7e7a8f5ad8 [skip ci] Release v4.0.0
    omit 6397c21888 [skip ci] fix release.yaml
    omit ab6c5e5c88 ci: fix release.yaml
    omit c793de4a40 [skip ci] fix realease.yaml
    omit e78e949199 fix: release prep
    omit b175c097c9 [skip ci] update release workflow
    omit b594a92524 [skip ci] Add new users to .asf.yaml configuration
    omit 237ab98c1f Merge pull request #162 from apache/adjust-published-dependencies
    omit 52126c455e Refactor quartz dependencies to use Grails BOM platform
    omit 661dcad7e7 Merge pull request #163 from apache/chore/issue_161
    omit 1b2d871cad Missed checking for now non-existent DISCLAIMER
    omit ddbe0d72d9 chore: Removed traces of incubation, DISCLAIMER and PPMC
    omit 6b0431c3ec Refactor dependencies in build.gradle
    omit 8ad85f882f Update Gradle version to 8.14.3 in .sdkmanrc
    omit 07a9dd7239 Update Gradle wrapper to 8.14.3
    omit ac6fabccd6 Change dependencies to compileOnly so they are not in POM or Gradle Module
    omit 8925d290ff Merge pull request #160 from jeffscottbrown/patch-1
    omit 4647fe80ef Update simple.adoc
    omit a46768cdd0 chore: fix release notes & remove full change log
    omit 1e343b2be0 chore: ensure the grails name is present
    omit 0de784ff2c chore: update announce.txt to have correct documentation link
    omit 8b6cfc96ff chore: grant access to actions in case there are pending changes
    omit 7879490e3b chore: correct name
    omit de0db4a316 Merge pull request #159 from apache/merge-back-4.0.0-RC2
    omit 0cd68b502a chore: add post release scripts
    omit 3c8f93ae7b [skip ci] Bump version to 4.0.0-SNAPSHOT
    omit fc31b561a7 Update groovy_pmc.txt
    omit 2d125842fe chore: adjust verification script to not error when no differences remain
    omit b047aa2d4e [skip ci] Release v4.0.0-RC2
    omit 2eeea07f6c ci: add release abort workflow & update verification script to check svn artifacts
    omit 88f8828acd ci: add commit hash to publish job
    omit 3c1a11a1ed ci: do not require approval to run the source step
    omit bfc93dfbbc chore: update rat config
    omit d759570e3f chore: update release drafter for disclaimer
    omit a52989b173 feature: update to Grails 7.0.0-RC2
    omit 0b479ee7f2 ci: add upload to release workflow
    omit c1e70915a7 chore: update for grails publish move
    omit 3dbea9f2c4 Merge pull request #157 from apache/merge-back-4.0.0-M3
    omit eade905780 [skip ci] Bump version to 4.0.0-SNAPSHOT
    omit 3c60afe79c fix: `gradle-bootstrap` error (#156)
    omit 46dcbca492 [skip ci] Release v4.0.0-M3
    omit 7014e91da8 [skip ci] fix: add workaround in `verify.sh` (#155)
    omit d5bcb8cef1 [skip ci] ci: add matrei as GitHub env reviewer (#154)
    omit f99396cef9 [skip ci] chore: make Groovy script executable (#153)
    omit da57bcc1e1 [skip ci] fix: key file location
    omit c8a58193ac [skip ci] chore: Make scripts executable
    omit 544d55017a [skip ci] ci: add missing tasks since quartz is not structured like other plugins
    omit d7d7447409 ci: update release workflow to match upstream grails-core release process
    omit f1d0765dbe Merge pull request #152 from apache/grails7m5
    omit a0c537a93a feature: update to Grails 7.0.0-M5
    omit 7813b4c9b4 Merge pull request #150 from dauer/issue-105-fix-broken-link
    omit da26b26cbe Issue-105 Fix broken link in README.md
    omit e0840cb163 Merge pull request #148 from matrei/apache-release-prep
    omit d3143c68e8 ci(feedback): add rat workflow
    omit f88238541a fix(deps): bump Grails to `7.0.0-M4`
    omit 3769b82c5a fix(deps): force Groovy to `4.0.27`
    omit 9b568c5dde docs: add `Building from Source` section to `README`
    omit df339d4c54 build: add a `skipTests` condition
    omit 50657fa766 chore: add `CODE_OF_CONDUCT.md` and `DISCLAIMER`
    omit b662e3d72e ci: add `.asf.yaml`
    omit 311e0c3455 build(feedback): add `gradle-bootstrap`
    omit 779f54566c chore: update `.sdkmanrc`
    omit 36a47ec946 build(feedback): remove unnecessary rat exclude
    omit bca0920d9c build(feedback): add repository filters
    omit 33cc1203e9 ci: update GitHub action workflows
    omit 1cafc18e22 build: generate redirect file to guide
    omit 399f8c5e95 chore: update Gradle wrapper to `8.14.2`
    omit 7dc1c8d480 chore: add verification scripts
    omit 159a1da410 chore: cleanup `docs-config.gradle`
    omit e0bf5f7fdd build: add configuration for reproducible builds
    omit d0d7bba73e chore: add Apache Release Audit Tool (rat)
    omit a07316f3f2 chore: add license headers
    omit c9b58e4e32 chore: clean up `test-config.gradle`
    omit af354d34dc docs: convert docs from `gdoc` to `asciidoc`
    omit ae09caf1ad build: update `buildSrc` dependencies
    omit 31b99949b3 build: update `buildSrc` repositories
    omit 2e68e7b74a chore: add `HEADER` and `NOTICE` files
    omit a93bc25be0 build: update build scan and cache settings
    omit daa98e49e7 build: update develocity auth (#147)
    omit 6f625fe78c build: switch develocity instance (#145)
    omit bf6e0798ca Merge pull request #143 from matrei/apache-coords-change
    omit 9420361077 ci: set correct env var `GRAILS_PUBLISH_RELEASE`
    omit a522b4ac50 build: Apache artifact rename
    omit 3ae3924795 ci: remove renovate monorepos
    omit 90fb3f23fb ci: update Develocity settings
    omit 0ad2521e08 fix: rename project to `grails-quartz`
    omit 9b96ee21e4 fix: update `.sdkmanrc` Java to `17.0.14-librca`
    omit 9c0e9d2582 fix: update Gradle Wrapper to 8.13
    omit 8c6a21432a fix: remove star import
    omit 18ef983f97 fix: switch to Slf4j logging
    omit 9f4bbaabf7 fix: remove redundant files
    omit 978971c533 Merge pull request #142 from grails/switchGhPagesDeploy
    omit a7894363ef Switch to grails/grails-github-actions/deploy-github-pages@main
    omit 9e5ab9f46e chore: Bump version to 4.0.0-SNAPSHOT
    omit 0a2f80455a [skip ci] Release v4.0.0-M2
    omit 2b38341a07 #139: loadQuartzProperties getProperty replaced with get (#140)
    omit ae0ed77f43 chore: Bump version to 4.0.0-SNAPSHOT
    omit 3734f6848d [skip ci] Release v4.0.0-M1
    omit 487b9ebde3 [skip ci] pre-release 4.0.0-M1
    omit c703cb81cf Switch to grails/github-actions
    omit 61d420bc96 Switch to grails/github-actions
    omit 9901ceb36b Switch to grails/github-actions
    omit 43914cd712 Fix NEXUS_PUBLISH_URL
    omit e2044ba090 Upgrade to Grails 7.0.0-snapshot (#136)
    omit df2c39abbb Merge pull request #138 from grails/3.0.x
    omit e3e1157b88 Merge pull request #137 from grails/2.0.x
    omit 3ef2b9827e Merge pull request #134 from jpdev01/2.0.x
    omit d94f638b87 Merge pull request #1 from jpdev01/purgetable-datasource
    omit 2980080287 Update purgeTablesBean to dynamically resolve dataSource
    omit 61be103210 Merge pull request #133 from arjangch/4.0.x
    omit 65798962db upgrade to java 17
    omit 926b58262f Merge pull request #132 from arjangch/4.0.x
    omit f3a79219fb upgrading spockframework to 2.4 for groovy 4
    omit 416eec0f9c upgrade to Java 17
    omit 8c7a021d8c Update to 4.0.0-SNAPSHOT for Grails 7
    omit f34bc3904d chore: Bump version to 3.0.1-SNAPSHOT
    omit c8cd95bcf3 [skip ci] Release v3.0.0
    omit 5d46f8b8ce chore(deps): Remove unused test deps (#127)
    omit 9c840c64a5 chore(readme): Use correct notation for note (#128)
    omit 1f784567e3 Refactoring of tests to be compatible with the spock framework (#126)
    omit 730bb5c4b0 Merge pull request #125 from matrei/matrei/grails-6
    omit f1d1b1c9b5 fix(ci): Set correct sonatype publish properties
    omit 07c2d2e8d5 fix(build): Add Gradle settings
    omit bbe2b3b7e7 fix(config): Remove autoStartup from plugin.yml
    omit 846c72cbbf chore(): Update links
    omit f858ba4c68 fix(readme): Update readme
    omit 348397b868 chore(): Remove travis files
    omit d770c20527 fix(build)!: Upgrade to Grails 6
    omit 31b31321c7 Update .travis.yml to openjdk8
    omit 3b297a94e6 Only shutdown the quartz scheduler if the plugin is enabled
    omit a726a84fea Fix change default value waitForJobsToCompleteOnShutdown
    omit 568acb9ed5 Revert "Bugfix"
    omit 7e6849f019 Bugfix
    omit e0026f74ce Critical CVE for c3p0 and Seems Exclude pattern incorrect
    omit 68b8079830 Bumped to 2.0.14.BUILD-SNAPSHOT
    omit cb0853d905 Bumping plugin verion for release, 2.0.13.BUILD-SNAPSHOT -> 2.0.13
    omit a548d94239 Updating credentials
    omit 38b96eed25 Merge pull request #94 from mamunsardar/patch-1
    omit 5eb190ef6a Update README
    omit 8aaa1c068f Merge pull request #93 from mamunsardar/master
    omit 6d8ce4e867 use static property to handle update for grails 3.3.0
    omit db22a8db45 snapshot bump
    omit ae17ab59e9 adding onCHange events to monitor for job class changes and trigger changes in development mode, added jobEnabled toggle as well to JobClass, now removes jobs and triggers for job classes that no longer exist as well
    omit 2e8ec9769b version bump for dev
    omit 39cdc2e3aa shutdown flag tweak in the event auto shutdown is not configured in config file
    omit 8d99ff5d6d build snapshot
    omit 5d0890034c switching jdk test version
    omit 8b9d439a00 bumping openjdk test version
    omit cc116220cd bumping memory limit some more
    omit 06f28410f0 more cleanup on bumping gradle and grails version dependencies to recent versions
    omit 74654bf10d bumping memory utilization limits
    omit 3c15d00240 version bump back to snapshot
    omit c6127dd449 bumping version for release
    omit 272a2103db gradle wrapper bumped to 3.3
    omit 18fbdcb4f0 Merge branch 'master' of github.com:grails-plugins/grails-quartz
    omit b907c2c4f7 updating build to test against grails 3.2.4 , should probably go farther to 3.2.8 but something is up with bintray
    omit a69551a878 [CreateJob script] Ensured that if 'Job' already exists in the end of JobName, then remove it from jobName. (#45)
    omit bee335dfba Resolves issue #71 , probably #75 and #34. Quartz was starting up too… (#86)
    omit 8acf276a91 Merge pull request #72 from kefirfromperm/master
    omit d52b3be546 hibernate3 and hibernate5 support
    omit 984c99c58b email fix
    omit bb47f1e443 2.0.10.BUILD-SNAPSHOT
    omit 4b4b0fbe68 #67 problem with RamStore and jdbc sessions with re-cycled worker threads
    omit 9a6fad6fcd Merge pull request #69 from AlexKovynev/patch-3
    omit e734777ef3 Reverse wrong connection to jdbcStore
    omit 6d83c7d2c2 Start 2.0.9.BUILD-SNAPSHOT
    omit 6bf3595e2f #63 build deploy issues
    omit d77f6b310f #63 change default value for jdbcStore so RAMStore is used
    omit cc628f0ba5 #63 publish new version with default value change
    omit 2c0ff83029 Merge pull request #63 from Schlogen/patch-1
    omit 605d68dfd4 Create plugin.yml
    omit 2fb768e42e Start 2.0.8.BUILD-SNAPSHOT
    omit 0e2a909936 Load plugin after hibernate and services
    omit 2352c1afd2 Merge pull request #61 from anwbhv/master
    omit 7bcede8d09 Correcting initialization of Jobs when autoStart == false. Fix for #59
    omit afa28ad713 fix snapshot ver for build snapshots
    omit 518eea4f8e #42 debugging  broken publish feature
    omit 8eba9f9b06 #42 debugging  broken publish feature
    omit f7589923a4 #50 fix jdbcStore issue in RamStore, fix NavigatableMap issues in Grails 3
    omit 3ee8c5b6d4 fix navigatablemap issues for grails3 users
    omit e443fc6444 Merge pull request #52 from AlexKovynev/patch-2
    omit 8561209394 Merge pull request #51 from AlexKovynev/patch-1
    omit 9ad495f656 Use @Slf4j
    omit 8f6f39c568 Use @Slf4j
    omit cbcb757e80 change authorEmail
    omit f75756359f 2.0.6.BUILD-SNAPSHOT
    omit 0ba9627c17 Update quartz to 2.2.2
    omit e7177b00e9 Fix for work with RamStore
    omit c9e6fe1505 #46 missing config values cause failure defaulting plugin to disabled, extra check on SessionBinderListener that jdbcStore is turned on.
    omit 9dac39eff6 #44 allow table flush on startup when in jdbc mode
    omit 55190d2964 Merge remote-tracking branch 'origin/master'
    omit 75b5c7e7ed #42 publish the new release
    omit 415fd7fb51 fix version number
    omit 86058d4cd5 #42 debugging  broken publish feature
    omit cdceaad15d #42 debugging  broken publish feature
    omit 95ac9c20de #42 fix broken build and release 2.0.3
    omit 260b27ea89 #42
    omit 992df37c47 #37 fix for pluginEnabled not reading config value properly
    omit 0840bc693b #40, #32, #37 also add disable plugin config ability too
    omit b589e92c75 version 2.0.2
    omit e17ccdc6b1 remove asset dependency
    omit cf763e9cfc Start 2.0.2.BUILD-SNAPSHOT
    omit 427120a2e1 Update README
    omit be29851c3d Release version 2.0.1
    omit 46c5c42778 Add urls for Bintray
    omit d3d8edca2e Update to Grails 3.0.9
    omit e3a33a4384 Merge pull request #38 from sbglasius/master
    omit 8126451d87 Add GrailsApplicationAware for easy access to grailsApplication in QuartzJob
    omit 61028649b5 Updated .gitignore to ignore IDEA files
    omit fc21884f45 added settings.gradle to change the project name to "quartz" instead of inferring it from the directory name
    omit 3f54345af4 update io.spring.dependency-management
    omit 06879d2e3b update email address
    omit 89fb286632 2.0.1.BUILD-SNAPSHOT
    omit cdcb0385b3 update travis environment variables
    omit e22e23fedd remove unused import
    omit c37993e41e Merge pull request #35 from sbglasius/master
    omit 40e3b3d777 Removed WebAttributes from QuartzJob trait as it is not used, and not needed.
    omit 684e6a0aaa Updated readme about branches
    omit dc716d834b Merge pull request #22 from magx2/master
    omit d53e99f5f9 Quick start
    omit 81ac796a74 Merge pull request #18 from xardas008/master
    omit c8c3115f7f println removed
    omit ebcb444205 quartz.autoStartup configuration will now be evaluated before executing any scheduler.
    omit 7e5164c04d Version 2.0.0
    omit a83f0b548f 2.0.0.RC1
    omit 26d0648e25 Use Grails 3.0.2
    omit d2a342c9ba Use Grails 3.0.3
    omit a5392ead26 Merge pull request #15 from anshbansal/patch-3
    omit b61e29e490 Update README.md
    omit 1dc0bf6245 back to snapshot
    omit fa34a31321 2.0.0.M5
    omit 53ca936c0c update note about config
    omit 05714ed6a6 auto publish docs
    omit baa65217db Improve compile time job checking
    omit b1fbcbace1 Implement artefact handler in Groovy
    omit 12625ac518 ignore .idea folder
    omit 877c581f74 Merge pull request #13 from anshbansal/patch-2
    omit 6ccfe0acab Removed gsp as they are not needed
    omit 5f71301373 Merge pull request #11 from anshbansal/master
    omit 76e6d1f2ec Removed JVM args added when facing issues
    omit 018da93742 Added doc plugin. Updated spring dependency as per 3.0.2
    omit cbaf5acf89 Merge pull request #10 from anshbansal/patch-1
    omit 5fdabfab24 Added docs back. Updated bintray plugin as that was causing exceptions with gradle 2.4
    omit 28feb83fe1 Added issue Management for plugin-info
    omit 6207b67332 Merge pull request #6 from dtamm/master
    omit 721dcd19d8 version back to snapshot
    omit 34d8594fd4 Boolean fix for PR#6
    omit 04d8ed9f09 JDBC Support PR
    omit d0ca242b39 Merge pull request #5 from robbugh/master
    omit b83ab74943 Must add the 'org.quartz' prefix to the autoStartup property
    omit 1ca0e14186 https://github.com/grails3-plugins/quartz/issues/2
    omit 8f0b8583e6 Version 2.0.0.M4
    omit 9036612065 Use Grails 3.0.0
    omit 2bb439ba03 reorganize application.yml
    omit 574e22bbc8 use Grails 3.0.0.RC2
    omit bb8a30e63c rearrange plugin ordering
    omit b3f66fefa7 back to build-snapshot
    omit cf20c147d8 See https://github.com/grails/grails-profile-repository/commit/e7b0eb720d860c6426b17e4528ca304a8569994e
    omit cf1b5fb17d use Gradle 2.3
    omit 4c345dca2c use Grails 3.0.0.BUILD-SNAPSHOT
    omit 08165a9516 update TraitInjector
    omit 02a1f89277 fix typo
    omit 8d0ba6edd0 Version 2.0.0.M2
    omit c00c7ccea5 Use Grails 3.0.0.M2
    omit bf23dd61bf rearrange build file to deal with publishing problems
    omit 6f1ca7fbb7 Update travis environment variables
    omit 8515347944 add Job suffix to Job class name
    omit 4bc65b3d46 2.0.0.BUILD-SNAPSHOT
    omit 4039da6a9e version 2.0.0.M1
    omit dbf2bc02d3 remove version property
    omit 9e269fee7d add some missing copyright headers
    omit 6a3fe1764b remove some commented code
    omit 24352aa0f4 respect config.quartz.autoStartup
    omit 204fe4a1a2 simplify static method invocations
    omit 3fc496c40f remove reference to Holders
    omit a757845eea add remaining schedule management methods
    omit 9c5f08c8ec add some overloaded schedule(...) methods
    omit a5921e44f7 add schedule(...) method
    omit 3ed5d2ccd4 make trait @CompileStatic friendly
    omit 414fa97983 testing static method in job trait
    omit ce89ac7901 introduce QuartzJob trait
    omit 0f93af447a update gradle wrapper
    omit a53cc8b49b apply bintrayPublishing.gradle
    omit 799ecbd431 add bintray plugin
    omit d3df53278e update travis config
    omit 9a5e8e29c3 update version properties
    omit c0c2884a07 trivial change
    omit df080912b2 generate gradle wrapper
    omit cc5b89ab77 Update travis config
    omit 8faa943e30 update Travis config
    omit 9dd01df78a copy in Grails 3 plugin code
    omit 2e7e720fe7 generated docs shouldn't have been committed
    omit a47735208b not used
    omit 96c3e92ae0 cleanup
    omit cedf7626ce Change version to 1.0.3-SNAPSHOT
    omit 003555aba4 Release 1.0.2
    omit 4bb6c30e70 Merge pull request #29 from longwa/master
    omit c89b67bf10 GPQUARTZ-140: Properly detect hibernate4 plugin
    omit 530f66f728 only run on oracle jdk7
    omit 1bd366bcec add github id
    omit ab38213731 disable openjdk7 build for the moment
    omit 58b3279063 update secure tokens
    omit 474b5416db add travis CI credentials config
    omit 3dd7c625d8 Make tests Grails 2.3.x compatible
    omit e2399c0049 Merge branch 'master' of github.com:grails-plugins/grails-quartz
    omit bedf177c71 remove jars from ignore list to include wrapper
    omit af092423e9 Added Travis Build status
    omit 637681d199 update Travis CI, update version to snapshot version
    omit 4b99c379f8 Merge pull request #26 from stokito/master
    omit 953cd33dfd Merge pull request #28 from weseek/master
    omit b87b49b260 fixed missing import
    omit f63b290194 Update README.md
    omit 6c500f227d Update README.md
    omit 7c73829533 Rename README.rdoc to README.md
    omit a7287be45a Merge pull request #24 from ozren1983/master
    omit ed2292222f fixed indentation in some of the .sql files
    omit 655159b3ee schema 2.0 to 2.2 upgrade
    omit dd5e325461 fixed doc url
    omit 210e8aea1b upgrade quartz to 2.2.1
    omit bef6d09456 upgrade quartz to 2.2.1
    omit fa6e876add Merge pull request #23 from kefirfromperm/master
    omit bb25546938 Resolve merge conflict.
    omit 4738830e77 Merge remote-tracking branch 'remotes/rvanderwerf/master'
    omit 7b3ca3cd35 Updates the plugin version to 1.0
    omit 85f02f469a Merge latest changes to the master.
    omit 952590500e Merge pull request #22 from chriskuehl/master
    omit d155204289 Fix minor typo in README.
    omit 947d8c5b50 update version # add Vitalii back to authors
    omit 6dbd179094 Merge pull request #1 from kefirfromperm/cleanup
    omit 00a0ffc3bc Merge pull request #1 from kefirfromperm/cleanup
    omit 92e91c56ec import org.quartz.SimpleTrigger
    omit c27f60dbd8 update version #
    omit c0aecde95e GPQUARTZ-131 remove depenency on grails 2.3.0 release plugin
    omit 10ffe734b5 cleanup
    omit 4587845434 fixed release plugin issue
    omit 8a581d8e52 plugin.xml shouldn't be in source control
    omit 4d33b7386d Merge branch 'master' of https://github.com/grails-plugins/grails-quartz
    omit 9b3941b155 Merge pull request #19 from kefirfromperm/master
    omit 54928c016f Version 1.0-RC11
    omit 3c07f77c7a Logger for the plugin class.
    omit 218ba7177c Compatibility with Grails 2.0.0
    omit 34d9efc685 plugin.xml
    omit d9f06e540b Job description
    omit 887150e0cf Merge remote-tracking branch 'upstream/master'
    omit 8501458227 adding addl author
    omit 135b2d23f8 pull request #18
    omit 4859b809d6 update version for latest pull request merges
    omit 426bd36e44 Merge pull request #18 from derekslife/master
    omit 04a62f0122 Ability to specify a Quartz Job's JobDetail description within Job configuration. This is useful for applications which list current Quartz jobs' details for user display.
    omit 9966a533bd Upgrade grails version to 2.2.4
    omit 63fdaa1946 GPQUARTZ-10 Removed shutdown method in BootStrap. Uses standard destroy method from SchedulerFactoryBean. The issue is done now.
    omit e6d352fcd8 GPQUARTZ-10 Add destroy method. Needs more tests.
    omit f25c567ada Merge remote-tracking branch 'upstream/kefirfromperm'
    omit c35f29a360 Merge remote-tracking branch 'upstream/master'
    omit 86844c217c Merge pull request #16 from Ticketfly/configurable-connection-pool
    omit eaa43f722e Merge pull request #17 from kefirfromperm/master
    omit c50fa22259 http://jira.grails.org/browse/GPQUARTZ-120
    omit c55a10d426 Allow dataSource to be overridden with the name of the bean in config.jdbcStoreDataSource.
    omit cd47f2bff7 Add StatefulGrailsJob comment.
    omit aeda96823e Migrate to the Quartz 2.2.0
    omit e6642fd370 Used specified job class for non concurrent jobs. Fixed problem with session listener.
    omit e858ab0044 Fix possible problem in GrailsJobDetail.
    omit fd111b1ae2 Refactored JobDetailFactoryBean
    omit 43098fc1ad Small refactorings
    omit c05447dade onChange
    omit 4d378c1d67 SessionBinderJobListener only if required
    omit 4510ed852d Removed JobDetails and Trigger beans from the Spring context.
    omit e44ae8e65e Removed listeners
    omit c7d0bd33e3 Removed GrailsStatefulJob
    omit ab68e1d432 Fix tests bug.
    omit 2d198831d4 Merge remote-tracking branch 'upstream/master'
    omit 18458c91b1 Merge pull request #15 from lbredeso/master
    omit d98c5850be Merge pull request #13 from yamkazu/improve-createjob
    omit 8af60d68c4 Expose underlying job in GrailsJob
    omit 309dfce3ce QuartzGrailsPlugin types
    omit 1955b7d531 Tests for the dynamic methods of job artifacts.
    omit 51f1866584 Comment on JobManagerService tests.
    omit b7c6c6fc8f Changed JobManagerService tests package.
    omit 393907e2aa Make JobManagerService tests as integration.
    omit f2dc5d1db3 Simplified schedule methods.
    omit 152d98be7f Removed configuration handler.
    omit 3fd0038870 Removed configuration handler.
    omit c04e3e0b71 Quartz dependency.
    omit 72da0ccbf3 Merge remote-tracking branch 'upstream/master'
    omit f4a7cc697c Quartz dependency.
    omit 50e8495a6d Merge pull request #14 from robbugh/master
    omit 891bcf8910 Set the name of the scheduler to the Quartz instanceName property
    omit a3ca0415a8 A comment to GrailsJobFactory
    omit b05f52fdce refactored TriggerConfigBuilder
    omit a5c7137024 Improved create-job command a bit
    omit 0c54be6c87 Merge remote-tracking branch 'upstream/master'
    omit b54ea36d9a removed unused dependencies
    omit 48bffa4f98 removed deprecated api
    omit e43cc628a7 Remove wrapper
    omit ebdf3ce571 Tests for the JobManagerService for methods for pause and resume  jobs.
    omit ead8e03790 Merge pull request #12 from kefirfromperm/master
    omit 2a85370636 Validations and tests
    omit 054e891d6a GrailsJobClass
    omit be364aef44 CustomTriggerFactoryBean refactoring
    omit 63afc698de Comment on SessionBinderJobListener
    omit 9728e31b83 Simple refactoring of TriggersConfigBuilder
    omit 47ac875029 Tests for JobDescriptor and TriggerDescriptor
    omit b6e4053f75 TriggersConfigBuilder, changed the parameter type from HashMap to Map
    omit 2ab09a1345 GPQUARTZ-105 JobManagerService, added methods pauseAll and resumeAll
    omit c8d920c89c GPQUARTZ-116 JobManagerService#interruptJob
    omit fd696af6bb GPQUARTZ-116 JobManagerService#unscheduleJob
    omit 7dcd965a4a GPQUARTZ-116 JobManagerService#removeJob
    omit dcb20bda4d GPQUARTZ-116 JobManagerService, pause and resume jobs and triggers
    omit a0006beb09 The test for JobManagerService#getRunningJobs.
    omit da242d5809 The test for JobManagerService#getJobs.
    omit b8e144c695 The test for JobManagerService#getAllJobs.
    omit 3af8d419ff The test class for JobManagerService.
    omit 5682887839 TODOs
    omit 38dbe537bf TODOs
    omit 3c007fd06c .gitignore
    omit 4c979c6f5e update version for release
    omit 33a82ac8c1 Merge pull request #11 from ftaiolivista/master
    omit c7e73a9df5 Merge pull request #10 from ctidigital/feature/allow-cronexpression-class
    omit f3deda9e61 merge with RC6
    omit 916492a6ed grails update
    omit 2c1a5642dc Allow cronExpression to be an instance of CronExpression
    omit cef4e08ea0 update version
    omit 4f56983ba6 Merge pull request #9 from Overruler/request
    omit d673324db6 Close session without exceptions escaping into Quartz where they interfere with the execution of other listeners.
    omit 83e66e93ec gitignore
    omit f449797f0b Merge pull request #8 from beckje01/travis
    omit a9952fc8a1 Added missing wrapper files.
    omit 5b6290cf4f Add Travis.yml for build
    omit 4535feab5d Add grails wrapper.
    omit 6345cc1c53 update version
    omit 0acf99c2cc Merge pull request #7 from kefirfromperm/master
    omit 4170eae6fd GPQUARTZ-111: Integration tests fails with Quartz plugin resolved
    omit f2fc261b20 Remove JetBrains IntelliJ IDEA project files.
    omit 26d6232a69 GPQUARTZ-112:  Methods 'triggerNow', 'removeJob', 'reschedule', 'unschedule' don't work. resolved
    omit 61b8bae8a2 .gitignore
    omit a9d42be1d2 Remove all JetBrains IntelliJIDEA project files.
    omit 292f135c5e Merge remote-tracking branch 'origin/master'
    omit 658ec35377 RC4
    omit 1238fbc550 RC4
    omit 2260eced07 Merge pull request #6 from cruzer45/master
    omit 9bf1f0ae93 org.quartz.Scheduler.deleteJob(String jobName, String groupName) was removed in the most recent API. It has been replaced with org.quartz.Scheduler.deleteJob(JobKey jobKey). Made the necessary changes to make it compatible with the new API.
    omit 54d0ef7939 fix bug with cron triggers
    omit a1a4ca0f1b upgrade to grails 2.2 and release plugin 2.2.0
    omit c2f90ac813 upgrade to grails 2.2 and release plugin 2.2.0
    omit 0073816ce0 Merge remote-tracking branch 'origin/master'
    omit ce930197e2 upgrade to grails 2.2 and release plugin 2.2.0
    omit 61146f3ecf Merge pull request #2 from isinev/master
    omit 07f67f24ba Merge pull request #5 from rvanderwerf/master
    omit 5f65618829 update plugin to use quartz 2.1.x. This allows use of latest version of Terracotta and Tomcat 7.
    omit e78b7a2059 random def
    omit eaf536523d fixed reload http://jira.grails.org/browse/GPQUARTZ-102?page=com.atlassian.jira.plugin.system.issuetabpanels:changehistory-tabpanel
    omit b9a3c091ec ingnore eclipse metadata
    omit ac160c2016 grails upgrade
    omit e9f92c32b7 variable name fix in JobManagerService#getJobs
    omit 369a417201 updated plugin.xml
    omit 783651b9f1 fix custom trigger formatting in docs
    omit 32734a4fd2 Merge pull request #1 from marcpalmer/182e760915365cebfb57b4a137775d53cb417799
    omit 182e760915 Reworked config to merge in correct order, app Config (and external configs) can now override DefaultQuartzConfig values
    omit 2a78759c36 Merge remote-tracking branch 'ticketfly/persistence-interceptor'
    omit 570ef3194a update version to 1.0 rc2
    omit da65cf9073 docs ported to gdoc
    omit 2b52cd3692 update versions, fix broken reloading
    omit 5fa0c25b08 load after datasources plugin, if it's installed.
    omit 1d19cfb2b2 SessionBinderJobListener refactored to use persistenceInterceptor to wrap Quartz jobs in a persistence context.
    omit d91feebc39 Merge pull request #20 from Ticketfly/exclude-slf4j-api
    omit 3ba7974d2e exluding slf4j-api because the version it pulls doesn't play nicely w/grails 1.3.7
    omit 6a11f9a95e [fixes #16] Get rid of plain constant interfaces
    omit 937f0d02c2 Edited README.rdoc via GitHub
    omit 5dd05822d8 Add StillMaintained.com button to the README
    omit 3583e79ce4 Remove 'developers' descriptor to prevent duplicate entries in POM
    omit d64045211f Revert "Remove 'developers' descriptor to prevent duplicate entries in POM"
    omit 50207797fe Remove 'developers' descriptor to prevent duplicate entries in POM
    omit 1f05c84b55 Add new plugin descriptors for grails-maven-publisher-plugin
    omit 96f09e4411 Move all code to the grails.plugins.quartz package; update license; reformat code & optimize imports
    omit f9f08e245b Merge branch 'master' into pledbrook-fix-tests
    omit 3af604b330 Merge remote-tracking branch 'pledbrook/grails-1.2'.
    omit db5b0760cc Migrated to the new IDEA project structure
    omit 62382a5a1b Plugin now depends on Grails 1.2+, which means it no longer needs to package the Quartz JAR.
    omit 80c486b6c0 Fixed a few of the failing unit tests and also fixed the names of some of the test case files (which didn't match the class names in those files).
    omit 469c6c7101 updated Grails version
    omit ee1e868bed added exposeSchedulerInRepository configuration parameter (fixes GRAILSPLUGINS-2662)
    omit db1a112eed updated Quartz to 1.8.4
    omit 68f4f5fdac Removes debug println statement
    omit eef6aed201 Fixes some conflicts which arised during massive refactoring
    omit 4936d4f89d Updates my email address
    omit 2ef1b150ba Slight fix to the IDE configuration file
    omit 20bb71e069 Updates job template for create-job script to follow new triggers configuration convention
    omit 86effd7b71 Large refactoring: renames all *Task* entities to *Job* ones. Ex. DefaultGrailsTaskClass becomes DefaultGrailJobClass and so on.
    omit bad9ff5a1d changes plugin.xml to include new BuildConfig resource
    omit 069b3408e2 removes unused and unsupported Spring facet from IntelliJ IDEA configuration files
    omit 8e5396ad7a improves JobManagerService and fixes an issue with #getAllJobs() method, which was returning only one trigger per job despite of real triggers count (fixes GRAILSPLUGINS-2057)
    omit 41ce1dee3d force UTF-8 as file encoding in the IntelliJ IDEA
    omit ab73b1203e disables Quartz updates check by default (fixes GRAILSPLUGINS-2221)
    omit eb1fc29dba ignore 'target' folder
    omit c037bed1a6 refines plugin configuration abilities and removes default quartz.properties
    omit dbbbb455b0 reduces Hibernate dependency to compile time only (fixes GRAILSPLUGINS-917)
    omit 8c77a8b2b7 adds support for jobs interruption with Scheduler.interrupt() method (fixes GRAILSPLUGINS-2042)
    omit 43d28c90f4 Job#execute() method invocation was completely rewritten to be more accurate with throwed exception (fix #2)
    omit bda69d6136 * fixes some paths to the library sources
    omit 90abe70c3a * updates some version numbers
    omit a787308b51 * updates Quartz scheduler to the latest and greatest 1.8.3
    omit 9d265d328c * update project files for IDEA 9
    omit 344bac3801 Minor change to plugin to not set configLocation on the quartzScheduler if properties supplied via grails.config.quartz.props.
    omit 5136fe9e30 Changes to allow more groovylike quartz configuration. Users can omit quartz.properties and supply them in QuartzConfig.groovy (or any of the merged config locations) as a quartz.props section. Falls back to quartz.properties if no grails quartz properties supplied.
    omit d05fe8db08 Removed quartz.properties, allowed properties to be supplied in QuartzConfig.groovy
    omit 45728fcd79 Removed unused files
    omit ce7dcd8455 Removed unused file
    omit f1fe0ce599 Updated version number to 1.0-SNAPSHOT
    omit 8c51627328 Updated required Grails version to '1.1 > *'
    omit 20c48139fa Readme markup fixes
    omit 57bd14c1f8 First draft of README
    omit 5a12df0ef6 Removed web-app, since it's not used by the plugin
    omit 42cd4a8130 Added empty quartz.properties file
    omit 739e4fab26 Reverted bad change
    omit 09a4afa4d1 Fixed an error with scheduler shutdown in Tomcat (fix #GRAILSPLUGINS-1431)
    omit 033871ae89 Fixed compilation warnings (fix #GRAILSPLUGINS-1845)
    omit 1266b2a3f5 Changed QuartzBootStrap to not depend on the ApplicationContext directly and use autowiring instead (refs #GRAILSPLUGINS-1159)
    omit c26a9df0f4 Removed debug throw
    omit ccd1c18429 Updated to the latest Quartz 1.7.3
    omit 80fc00ef22 Fix CRLF
    omit 3f8439a503 Added 'requestsRecovery' configuration property for Jobs (fix #GRAILSPLUGINS-1701)
    omit 1c2affd3a9 Updated project files to Grails 1.2
    omit 3319a759cb Updated the plugin to work with Grails 1.2 (fix GRAILSPLUGINS-1808, GRAILSPLUGINS-1807)
    omit 19668f2875 Fixed an error with durable jobs (fix GRAILSPLUGINS-1420)
    omit 2dd59687fe Added reschedule(Trigger) and unschedule(name, group) dynamic methods (fix GRAILSPLUGINS-1647)
    omit b0689cff4b quartz.properties file is now loaded properly (fix GRAILSPLUGINS-1207)
    omit 2fa904f991 Fixed a typo (fix GRAILSPLUGINS-1460)
    omit 14b68cdc10 Placed JobManagerService into a package (fix GRAILSPLUGINS-1410)
    omit 191cedad84 Fixed an error with GString -> String convertion (fix GRAILSPLUGINS-1281)
    omit db5b1d55ee Preparing 0.4.1 release
    omit 373da2ee96 Fixing merge conflicts
    omit be9de0c0eb Merge
    omit 37d08d93df Updated 0.4.1-SNAPSHOT
    omit b2fbebfc1f Turned off auto startup of the Quartz scheduler in test environment (fix GRAILSPLUGINS-1159)
    omit be46a2f833 Upgraded to Grails 1.1.1
    omit 35cefe9cc4 Reverted bean names to old-style since it doesn't look like a good idea to inject job beans into controllers or services
    omit c95c718a5f Updated documentation
    omit 13c8a1141f Switching to CustumTriggerFactoryBean for registering all types of triggers
    omit c819a27b87 Updated documentation
    omit 3370446197 Switching to CustumTriggerFactoryBean for registering all types of triggers
    omit 9d684a84c3 Merge branch 'master' of git@github.com:nebolsin/grails-quartz
    omit 1f568d4345 Reimplemented support for scheduling with custom triggers (fix GRAILSPLUGINS-1118)
    omit fa8bf6e524 Added timezone parameter for the cron trigger
    omit 2c82fc893e Removed another file from JobManagerController stuff
    omit d018a0ec05 Merge branch 'master' of git@github.com:nebolsin/grails-quartz
    omit b59a29ec85 Reimplemented support for scheduling with custom triggers (fix GRAILSPLUGINS-1118)
    omit 0a7544d627 Added timezone parameter for the cron trigger
    omit 06488b4069 Removed another file from JobManagerController stuff
    omit e2215ae30c Fixed another error with 'def execute(JobExecutionContext context)' method
    omit 01d2db1836 Fixed another error with 'def execute(JobExecutionContext context)' method
    omit 32785e8131 Merge branch 'master' of git@github.com:nebolsin/grails-quartz
    omit dc84b07da0 Updated the snapshot zip
    omit 3b9d159131 Fixed an error with install-quartz-config script in Grails 1.1 (fix GRAILSPLUGINS-742)
    omit fd5ca3d736 Added generated documentation to the repository
    omit 27625822e6 Updated to Grails 1.1
    omit b8624192ba Updated the snapshot zip
    omit 4c1eff715b Fixed an error with install-quartz-config script in Grails 1.1 (fix GRAILSPLUGINS-742)
    omit 0b48bab83f Added generated documentation to the repository
    omit b6eee2bcdd Merge branch 'master' of git@github.com:nebolsin/grails-quartz
    omit 2f135de275 Updated snapshot archive
    omit 2c64ce73f1 Merge branch 'master' of git@github.com:nebolsin/grails-quartz
    omit 3752a8697d Removed JobManager Controller since it is in pre-pre-alpha stage and is not very useful currently
    omit 4e0ea0c2ee Fixed an error where def execute(JobExecutionContext context) method definition was not being detected (fix GRAILSPLUGINS-622)
    omit 0ed670c423 Merge branch 'master' of git@github.com:nebolsin/grails-quartz
    omit 9e944af3b5 Fixed an error where def execute(JobExecutionContext context) method definition was not being detected (fix GRAILSPLUGINS-622)
    omit 7024512525 Updated Quartz to the latest 1.6.5 release
    omit 3e440cc9b0 Merge branch 'master' of git@github.com:nebolsin/grails-quartz
    omit 9f17a3b571 Updated Quartz to the latest 1.6.5 release
    omit 67649ee89e Updated to Grails 1.1
    omit 7841e3ca4d Updated to Grails 1.1
    omit 60561f615d version of the Quartz plugin that works with 1.1-beta1
    omit a0975e7163 Created first version of Quartz Management Tool
    omit 4cd226e2a1 minor update to add support for specifying jobs within packages to the create-job command
    omit ec2187923a Forgot to update snapshot with the latest fix
    omit 02ee80139e Updated Gant script to use 'target' instead of 'task' since 'task' is deprecated in current version of Gant (fix for GRAILSPLUGINS-452)
    omit 11cc3e9da7 Fix for GRAILSPLUGINS-451. Also updated project files for IntelliJ IDEA 8.
    omit 345a26014c Added schedule(Date) method.
    omit 8e040be91f Implemented first cut of dynamic jobs scheduling.
    omit 0882a66370 Preparing 0.3.3 release
    omit 9d50629959 Added 'volatility' and 'durability' parameters for JobDetails and 'volatility' parameter for Triggers (work in progress on GRAILSPLUGINS-409)
    omit 7fbe9bb4d5 Fixed 'repeatCount = 0' parameter (GRAILSPLUGINS-415). Changed version number to 0.3.3-SNAPSHOT.
    omit fcf3e02d26 First attempt to make JobDetails non-volatile
    omit e72abb5a5d Updated version to 0.4-SNAPSHOT.
    omit 42302501cf Removed test reports from zip distribution.
    omit 8ce9bd8315 Added SQL scripts for creating Quartz DB schema in different databases. Updated version to 0.3.2.
    omit 9d49a516d4 Renamed factory beans for triggers to not include 'Grails' prefix. Updated license info and javadocs.
    omit 87ddcd9fd8 Renamed factory beans for triggers to not include 'Grails' prefix
    omit 5e0fbab887 Rewrote trigger support to provide native Quartz's triggers instead of Spring wrappers for better serialization.
    omit 41c58aac48 Removed unused imports.
    omit d048efdd40 Added support for execute(context) method, so users could access JobExecutionContext from their execute methods
    omit 18deb9efa0 Added 0.3.2-SNAPSHOT zip distribution
    omit e2495fa8cd Changed version to 0.3.2-SNAPSHOT and fixed an issue with "stateful" jobs, now new job instance is created for each execution.
    omit 6c59f09fc2 Corrected job template to use spaces instead of tabs.
    omit b48dc81444 0.3.1 bugfix release
    omit 3bf79e7dc1 reverted to MethodInvokingJodDetailFactoryBean since of GRAILSPLUGINS-374
    omit 6d5a75b6f9 changed version to 0.3.1-SNAPSHOT since of a blocker bug in 0.3 release
    omit a183f95f5d updated release info to 0.4-SNAPSHOT
    omit 5ea697cd96 deleted 0.3-SNAPSHOT release
    omit fbabfc347a 0.3 release prepared
    omit e72a3bf384 First cut of multiple triggers configuration. Also improved test coverage.
    omit d96b2c3e8e fixed some JavaDoc issues as well as unused imports
    omit 13c74008ee moved default property value constants to the interface
    omit 60fd11a063 added a validity check for the cron expression
    omit dcf4d52190 new snapshot version
    omit 5d241144c4 Forgotten import.
    omit ba1077192d Added per-environment configuration. Fixed autoStartup configuration parameter. Added StatusFinal event with appropriate message to InstallQuartzConfig script.
    omit bc1c98c4e4 Initial fix for GRAILSPLUGINS-364, GRAILSPLUGINS-359, GRAILSPLUGINS-47, GRAILSPLUGINS-307 and maybe others. Added clustering and JDBC storage suppot and plugin configuration with QuartzConfig.groovy (applied Burt's patch with slight modifications). Also moved scheduler startup into BootStrap file.
    omit af8427be56 Added repeatCount parameter for Job classes (GRAILSPLUGINS-358)
    omit 05c37c79d2 - removed unuser ExecutionControlTriggerListener since now all jobs are scheduled in doWithApplicationContext and there is no need for the trigger - upgraded to Grails 1.0.2 - fixed some code formatting issues
    omit 94dace80fc - 0.3-SNAPSHOT zip distribution
    omit 31ce1572da - several cleanups related to GRAILSPLUGINS-58
    omit 3588a29ee4 - fix for GRAILSPLUGINS-58 (upgraded Quartz to 1.6 since it's now compatible with the Spring's version included in Grails 1.0)
    omit b103d3d26b - fix for GRAILSPLUGINS-213 (Wolfgang Schell's patch applied with slight modifications)
    omit e28917c55e - changed version to 0.3-SNAPSHOT - fix for GRAILSPLUGINS-190 (Wolfgang Schell's patch applied)
    omit 28e503f607 Sorry just testing svn access
    omit ef4905c145 - new version of packaged plugin's zip added
    omit d2540d0488 - unused directories deleted
    omit 2103af0310 - migrating to Grails 0.6
    omit 26e4cb9a41 - migrating to Grails 0.6
    omit 8a724252ca - fixed convention 'execute' method on GrailsTaskClass - added several unit tests
    omit 567262d56b - removed unused 'jobs' directory
    omit 6dd417bd31 updated SNAPSHOT version
    omit 7b265dfe53 updated SNAPSHOT version
    omit 3cf5fde44a - GRAILSPLUGINS-55: added check for negative 'timeout' and 'startDelay' parameters during application startup - updated to Grails 0.5.5-RC1
    omit a52ec4bdcb - GRAILSPLUGINS-32: downgraded to quartz-1.5.2 due to incompatibility between Spring 2.0 and Quartz 1.6.0 - GRAILSPLUGINS-33: added global job listener which logs all exceptions occured during job's execution with ERROR log level
    omit 368c34810f - GRAILSPLUGINS-34: added a trigger listener which prevents jobs execution until application will be fully started up - added an ability to set startDelay for cron jobs
    omit 95b562b5ab version changed to 0.2-SNAPSHOT and QuartzGrailsPlugin.groovy updated to follow Plugin Distribution Convention
    omit ea50c4e453 added empty lib/ and classes/ directories to prevent 'not-existing' errors
    omit dfeb6007ca Install/upgrade scripts and licence file added
    omit 8cad5a1038 Initial import
    omit 3364307ee4 Created folder remotely
     add ab50c393a5 feat: add SessionResolver infrastructure and extend core datastore APIs
     add eea98724a3 fix: restore concrete Service trait methods to fix @CompileStatic compilation
     add 9d11da0814 fix: widen MongoMappingContext.initialize visibility to public
     add c382eed135 fix: address Copilot review findings on PR #15779
     add 20966b0380 fix: address review feedback on SessionResolver/AbstractDatastore architecture
     add 8374bc80e9 fix: guard getTenantId() DISCRIMINATOR mode and close review-flagged coverage gaps
     add 36179ebc7d fix: address jdaugherty's follow-up review on SessionResolver/AbstractDatastore
     add 7e50a21785 test(grails-datastore-core): close Codecov patch-coverage gap on getTenantId()'s lazy fallback
     add a5d5d311e7 feat: GORM O(M+N) scaling — GormRegistry, GormEnhancer, and core API refactor
     add ea2918717c fix: restore registerConstraints to GormEnhancer dropped in scaling refactor
     add ab58259ece fix: restore registerConstraints hook and fix MongoStaticApi fields dropped by scaling refactor
     add 30e08c99e3 fix: distinguish datasource connection qualifier from tenant ID in AbstractGormApi.execute()
     add 974eb55700 fix: mode-aware tenant lookup and bound DatastoreResolvers in GormRegistry
     add 6ac608bfe2 fix: register HibernateGormApiFactory in registerConstraints; update affected tests
     add 93ffb0dee3 style: remove unused ConnectionSource import and fix consecutive blank lines in HibernateGormEnhancer
     add 96d8e6f986 fix: restore deprecated GormEnhancer extension points for backward compatibility
     add 7db88ca741 fix: restore deprecated backward-compat API surface for adapter modules
     add 6c7fab8f4c fix: restore deprecated setDatastore and persistentEntity for H7 adapter compat
     add 54e1b4d408 fix: resolve null datastore in H5/H7 validation and dynamic finder dispatch
     add 76f800dcc4 fix: remove redundant this.datastore assignment in HibernateGormStaticApi
     add 18133aa76f Fix MongoDB functional tests: fall back to enhancer API factory when no GormApiFactory registered
     add 606ef97cae fix: restore null-tolerant service/datastore contracts in GormRegistry core
     add a6b1691bd4 fix: clear GormRegistry core-impl regressions (H5 core 42→6)
     add 0afca8b287 fix: resolve multi-tenant dynamic finder dispatch and tenant session passing (H5 core 6→3)
     add 1937163907 fix: honor getAll id order, null slots, and id conversion in Hibernate retrieveAll (H5 core 3→0)
     add 1da63f2e69 fix: register MongoGormApiFactory so Mongo entities resolve a MongoStaticApi
     add 5d1df27928 fix: apply pagination args before Query.list() in findAll-by-example
     add 3628b0d118 fix: implement find/findAll-by-example via findWhere/findAllWhere delegation
     add 7acb40fae7 fix: H7 first/last(Map) inherit core's order-aware implementation
     add 09b0a539cb test: align H7 core tests with the GormRegistry rewrite
     add 76da056195 fix: H7 disjunction/conjunction/negation operate on detachedCriteria
     add 0f78b71b1e fix: MultiTenant.eachTenant must not force current-tenant resolution
     add efbf76cde3 test: isolate Mongo multi-tenancy specs from singleton GormRegistry pollution
     add 325f167212 fix: @CurrentTenant data services resolve the primary datastore for tenant management
     add ca3e87e7ba test: @PendingFeature the pre-existing Mongo count-over-OR disjunction bug
     add 9b2ab9c06e fix: resolve GORM regressions surfaced by the registry refactor
     add ca5d6e77db chore: strip scope-creep config noise from the GormRegistry PR
     add a330c41ee7 fix: address Copilot review findings on PR #15780
     add 41d533c51b test: verify @Service+@CurrentTenant routing in DATABASE multi-tenancy mode
     add a8585dbfba fix: restore copyAnnotations dedup guard needed by ServiceTransformation
     add 713b29290b test(grails-datamapping-core): add GormApiResolverSpec closing PR #15780 coverage gap
     add 24c8518819 fix(grails-datamapping-core): restore saveAll's persisted-id return value; add GormStaticApiSpec
     add 621efb88dc test(grails-datamapping-core): add GormRegistryCoverageSpec closing PR #15780 coverage gap
     add b878c85a85 test(grails-datamapping-core): add GormEnhancerCoverageSpec closing PR #15780 coverage gap
     add dbf1708317 test(grails-datamapping-core): add GormValidationApiCoverageSpec closing PR #15780 coverage gap
     add 75ceaa4444 test(grails-datamapping-core): add GormInstanceApiSpec closing PR #15780 coverage gap
     add 0e1cb948d5 test(grails-datamapping-core): add AbstractGormApiSpec closing PR #15780 coverage gap
     add a0667f9316 test(grails-datamapping-core): add TenantsSpec closing PR #15780 coverage gap
     add e5aec81dc0 test(grails-datamapping-core): add DynamicFinderCoverageSpec closing PR #15780 coverage gap
     add 4e224360b2 test(grails-datamapping-core): add ServiceTransformationCoverageSpec closing PR #15780 coverage gap
     add cbe8e1b9b4 test(grails-datamapping-core): add MultiTenantEventListenerSpec closing PR #15780 coverage gap
     add e0e9c1fd93 test(grails-datamapping-core): add AbstractStringQueryImplementerCoverageSpec closing PR #15780 coverage gap
     add 045740a725 test(grails-datamapping-core): add DefaultTenantServiceSpec closing PR #15780 coverage gap
     add e8e15d7005 test(grails-datamapping-core): add CurrentTenantHolderSpec closing PR #15780 coverage gap
     add d7efddc398 test(grails-datamapping-core): add TenantDelegatingGormOperationsSpec closing PR #15780 coverage gap
     add 938bea4dc0 test(grails-datamapping-core): add GrailsTransactionTemplateSpec closing PR #15780 coverage gap
     add 7d5809f0ca fix(grails-datamapping-core): guard CriteriaBuilder's cache/join/select against a null query
     add 372604de53 test(grails-datamapping-core): add GormStaticApiRegistrySpec closing PR #15780 coverage gap
     add 14ec1762f2 test(grails-datamapping-core): add ConnectionSourceNameResolverSpec closing PR #15780 coverage gap
     add feeb017850 test(grails-datamapping-core): add GormValidationApiRegistrySpec and GormInstanceApiRegistrySpec closing PR #15780 coverage gap
     add 9180ddec8a test(grails-datamapping-core): add AbstractFinderSpec closing PR #15780 coverage gap
     add 2d05bf1e49 test(grails-datamapping-core): add FindAllByImplementerCoverageSpec closing PR #15780 coverage gap
     add 163a9a5dd2 test(grails-datamapping-core): add FindOrSaveByFinderSpec closing PR #15780 coverage gap
     add e71f238e24 test(grails-datamapping-core): add AbstractDatastoreApiSpec closing PR #15780 coverage gap
     add 1ce31b5e94 test(grails-data-simple): add SimpleMapDatastoreSpec closing PR #15780 coverage gap
     add 0c2816bfdc test(grails-datamapping-core): add AbstractServiceImplementerCoverageSpec closing PR #15780 coverage gap
     add c5f3841388 test(grails-data-hibernate5-core): add GrailsDataTckManagerSpec closing PR #15780 coverage gap
     add 13b03398d2 test(grails-datamapping-core): extend MappingContextTraversableResolverSpec closing PR #15780 coverage gap
     add 560086aac6 test(grails-datamapping-core): add DefaultTransactionServiceSpec closing PR #15780 coverage gap
     add 3e13f3a8bf test(grails-datamapping-core): add DefaultTransactionTemplateFactorySpec closing PR #15780 coverage gap
     add 83ea657576 test(grails-datamapping-core): extend TransactionalTransformSpec closing PR #15780 coverage gap
     add e049502377 test(grails-data-mongodb-core): add MongoStaticApiSpec closing PR #15780 coverage gap
     add 184020c5c1 test(neo4j): give OptimisticLockingSpec's cross-thread heisenbug more headroom
     new cd0502f3bc fix(neo4j): assert background thread completion in OptimisticLockingSpec
     new 169193b014 fix(neo4j): fix cross-session commit races and de-flake OptimisticLockingSpec

This update added new revisions after undoing existing revisions.
That is to say, some revisions that were in the old version of the
branch are not in the new version.  This situation occurs
when a user --force pushes a change and generates a repository
containing something like this:

 * -- * -- B -- O -- O -- O   (43fca1cf80)
            \
             N -- N -- N   refs/heads/fix/optimistic-locking-spec-join-assert (169193b014)

You should already have received notification emails for all of the O
revisions, and so the following emails describe only the N revisions
from the common base, B.

Any revisions marked "omit" are not gone; other references still
refer to them.  Any revisions marked "discard" are gone forever.

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


Summary of changes:
 .agents/skills/gradle-developer/SKILL.md           |  706 --
 .agents/skills/grails-8-upgrade/SKILL.md           |    3 +-
 .agents/skills/grails-developer/SKILL.md           |    4 +-
 .agents/skills/groovy-developer/SKILL.md           |   16 +-
 .agents/skills/mono-repo-integration/SKILL.md      |    2 +-
 .git-blame-ignore-revs                             |    2 -
 .github/dependabot.yml                             |    4 -
 .github/dependency-graph/external-references.yml   |    5 +-
 ....init.gradle => groovy-joint-build.init.gradle} |    4 +-
 .github/scripts/ossIndexReport.sh                  |   94 -
 .github/scripts/postStickyComment.sh               |   60 -
 .github/workflows/benchmark.yml                    |  394 --
 .github/workflows/codeanalysis.yml                 |    4 +-
 .github/workflows/codeql.yml                       |    4 +-
 .github/workflows/codestyle.yml                    |    6 +-
 .github/workflows/coverage.yml                     |    6 +-
 .github/workflows/end-to-end.yml                   |  149 -
 .github/workflows/forge-deploy-aws.yml             |  223 -
 .github/workflows/forge-deploy-next.yml            |  119 +
 .github/workflows/forge-deploy-prev-snapshot.yml   |  119 +
 .github/workflows/forge-deploy-prev.yml            |  119 +
 .github/workflows/forge-deploy-release.yml         |  125 +
 .github/workflows/forge-deploy-snapshot.yml        |  115 +
 .github/workflows/gradle.yml                       |  458 +-
 ...apshot-canary.yml => groovy-joint-workflow.yml} |  104 +-
 .github/workflows/rat.yml                          |    4 +-
 .github/workflows/release-close.yml                |    3 +-
 .github/workflows/release-notes.yml                |    2 +-
 .github/workflows/release-publish-docs.yml         |    8 +-
 .github/workflows/release-verify.yml               |   34 +-
 .github/workflows/release.yml                      |  110 +-
 .github/workflows/sitemesh2.yml                    |    8 +-
 .github/workflows/validate-actions.yml             |   59 -
 .github/workflows/vulnerability-scan.yml           |  176 +-
 .gitignore                                         |    1 -
 .sdkmanrc                                          |    4 +-
 AGENTS.md                                          |   41 +-
 CONTRIBUTING.md                                    |    6 +-
 DEVELOPMENT.md                                     |    2 -
 README.md                                          |    2 +-
 RELEASE.md                                         |   59 +-
 RENAME.md                                          |    8 +-
 THREAT_MODEL.md                                    |   16 +-
 build-logic/docs-core/build.gradle                 |   13 -
 .../main/groovy/grails/doc/UserGuideBuilder.groovy |  169 -
 .../grails/doc/gradle/PublishGuideTask.groovy      |  170 +-
 .../doc/gradle/PublishGuideWorkAction.groovy       |   54 -
 .../doc/gradle/PublishGuideWorkParameters.groovy   |   59 -
 .../doc/gradle/AuditGroovydocLinksTask.groovy      |   87 -
 .../grails/doc/gradle/GroovydocLinkAuditor.groovy  |  209 -
 .../test/groovy/grails/doc/GuideProbeMacro.groovy  |   43 -
 .../groovy/grails/doc/UserGuideBuilderSpec.groovy  |  189 -
 .../doc/gradle/GroovydocLinkAuditorSpec.groovy     |  199 -
 build-logic/gradle/wrapper/gradle-wrapper.jar      |  Bin 47505 -> 48462 bytes
 .../gradle/wrapper/gradle-wrapper.properties       |    2 +-
 build-logic/gradlew                                |    4 +-
 build-logic/gradlew.bat                            |    4 +-
 build-logic/plugins/build.gradle                   |   26 -
 .../buildsrc/AutoConfigurationImportsPlugin.groovy |   66 -
 .../apache/grails/buildsrc/CompilePlugin.groovy    |   33 -
 .../buildsrc/ConfigurationMetadataPlugin.groovy    |  829 ---
 .../GenerateAutoConfigurationImportsTask.groovy    |  181 -
 .../GrailsDependencyValidatorPlugin.groovy         |  159 +-
 .../buildsrc/GrailsValidateActionsPlugin.groovy    |   62 -
 .../GroovyDslConfigurationMetadataParser.groovy    |  345 -
 .../buildsrc/GroovydocEnhancerExtension.groovy     |   34 +-
 .../grails/buildsrc/GroovydocEnhancerPlugin.groovy |   47 +-
 .../apache/grails/buildsrc/GroovydocRunner.groovy  |   89 -
 .../apache/grails/buildsrc/PublishPlugin.groovy    |   43 +-
 .../org/apache/grails/buildsrc/SbomPlugin.groovy   |  175 +-
 .../grails/buildsrc/TestTaskShardingPlugin.groovy  |  174 -
 .../grails/buildsrc/ValidateActionsTask.groovy     |  236 -
 .../buildsrc/ValidateDependencyVersionsTask.groovy |  100 -
 .../ValidateProductionClasspathTask.groovy         |  102 -
 .../grails/buildsrc/VulnerabilityScanPlugin.groovy |   17 +-
 .../codenarc/codenarc.groovy                       |    4 -
 .../apache/grails/buildsrc/groovydoc-runner.groovy |   72 -
 .../grails/buildsrc/CompilePluginSpec.groovy       |  137 -
 .../ConfigurationMetadataPluginSpec.groovy         | 1590 -----
 ...GenerateAutoConfigurationImportsTaskSpec.groovy |  195 -
 .../GrailsDependencyValidatorPluginSpec.groovy     |   38 +-
 .../buildsrc/GroovydocEnhancerPluginSpec.groovy    |  162 -
 .../grails/buildsrc/PublishPluginSpec.groovy       |  113 -
 .../apache/grails/buildsrc/SbomPluginSpec.groovy   |  100 -
 .../buildsrc/TestTaskShardingPluginSpec.groovy     |  387 -
 build-logic/settings.gradle                        |    8 -
 build.gradle                                       |   58 +-
 dependencies.gradle                                |  421 +-
 end-to-end/README.md                               |  128 -
 end-to-end/build.gradle                            |   41 -
 end-to-end/gradle.properties                       |   25 -
 end-to-end/gradle/test-config.gradle               |   35 -
 end-to-end/gradle/wrapper/gradle-wrapper.jar       |  Bin 47505 -> 0 bytes
 .../gradle/wrapper/gradle-wrapper.properties       |    9 -
 end-to-end/gradlew                                 |  248 -
 end-to-end/gradlew.bat                             |   82 -
 end-to-end/legacy-commands-plugin/build.gradle     |   44 -
 .../plugin/HelloLegacyGrailsCommand.groovy         |   45 -
 .../src/main/resources/META-INF/grails.factories   |   15 -
 .../src/main/scripts/hello-legacy-script.groovy    |   24 -
 end-to-end/legacy-commands/build.gradle            |   98 -
 .../legacy-commands/grails-app/conf/logback.xml    |   31 -
 .../services/legacycommands/GreetingService.groovy |   27 -
 ...egacyCommandCompatibilityIntegrationSpec.groovy |  236 -
 end-to-end/legacy-g7-command-plugin/.sdkmanrc      |    4 -
 end-to-end/legacy-g7-command-plugin/build.gradle   |   83 -
 .../gradle/wrapper/gradle-wrapper.jar              |  Bin 47505 -> 0 bytes
 .../gradle/wrapper/gradle-wrapper.properties       |    6 -
 end-to-end/legacy-g7-command-plugin/gradlew        |  248 -
 end-to-end/legacy-g7-command-plugin/gradlew.bat    |   82 -
 .../g7/commands/HelloDerivedNameCommand.groovy     |   39 -
 .../g7/commands/HelloG7PrecompiledCommand.groovy   |   49 -
 .../HelloG7PrecompiledGrailsCommand.groovy         |   45 -
 .../src/main/resources/META-INF/grails.factories   |    1 -
 end-to-end/settings.gradle                         |  133 -
 end-to-end/taglib-index-incremental/build.gradle   |   57 -
 .../taglib/TagLibraryIndexIncrementalSpec.groovy   |  242 -
 etc/bin/Dockerfile                                 |   28 +-
 etc/bin/extract-build-artifact.sh                  |    6 +-
 etc/bin/rename_gradle_artifacts.sh                 |   11 +-
 etc/bin/test-bisect.groovy                         |   57 +-
 etc/bin/test-reproducible-builds.sh                |   18 +-
 etc/bin/verify-jar-artifacts.sh                    |   14 -
 etc/bin/verify-reproducible.sh                     |   66 +-
 etc/bin/verify.sh                                  |   20 +
 gradle-bootstrap/build.gradle                      |   47 +-
 gradle.properties                                  |   79 +-
 gradle/docs-dependencies.gradle                    |  110 +-
 gradle/functional-test-config.gradle               |   99 +-
 gradle/grails-data-tck-config.gradle               |    8 -
 gradle/grails-extension-gradle-config.gradle       |    3 +-
 gradle/hibernate5-test-config.gradle               |   25 +-
 gradle/hibernate7-test-config.gradle               |   25 +-
 gradle/mongodb-forked-test-config.gradle           |   21 +-
 gradle/mongodb-test-config.gradle                  |   18 +-
 gradle/publish-root-config.gradle                  |   19 +-
 gradle/rat-root-config.gradle                      |   10 +-
 gradle/redis-test-config.gradle                    |    5 +-
 gradle/spring-security-test-config.gradle          |   33 +-
 gradle/test-config.gradle                          |   73 +-
 gradle/wrapper/gradle-wrapper.jar                  |  Bin 47505 -> 48462 bytes
 gradle/wrapper/gradle-wrapper.properties           |    2 +-
 gradlew                                            |    4 +-
 gradlew.bat                                        |    4 +-
 .../async/factory/PromiseFactoryBuilder.groovy     |   18 +-
 .../future/CachedThreadPoolPromiseFactory.groovy   |    2 -
 .../factory/future/CompletableFuturePromise.groovy |  115 -
 .../future/CompletableFuturePromiseFactory.groovy  |  170 -
 .../factory/future/ExecutorPromiseFactory.groovy   |    2 -
 .../async/factory/future/FutureTaskPromise.groovy  |    2 -
 .../CompletableFuturePromiseFactorySpec.groovy     |  265 -
 .../test/groovy/grails/async/PromiseMapSpec.groovy |    2 +-
 .../test/groovy/grails/async/PromiseSpec.groovy    |    3 +-
 .../async/VirtualThreadPromiseFactorySpec.groovy   |  188 -
 grails-async/plugin/build.gradle                   |    7 +-
 .../groovy/grails/async/web/AsyncController.groovy |    4 +-
 .../grails/async/web/AsyncGrailsWebRequest.groovy  |    2 -
 .../groovy/grails/async/web/WebPromises.groovy     |   84 +-
 .../plugins/web/async/AsyncRequestSupport.groovy   |   61 -
 .../async/AsyncWebRequestPromiseDecorator.groovy   |   53 +-
 ...WebRequestPromiseDecoratorLookupStrategy.groovy |    2 -
 .../web/async/ControllersAsyncGrailsPlugin.groovy  |   60 +-
 .../plugins/web/async/GrailsAsyncContext.groovy    |    2 -
 .../web/async/GrailsWebRequestTaskDecorator.groovy |   68 -
 .../async/mvc/AsyncActionResultTransformer.groovy  |   98 +-
 .../web/async/spring/PromiseFactoryBean.groovy     |    2 -
 .../grails/async/services/WebPromisesSpec.groovy   |  212 +-
 ...equestPromiseDecoratorLookupStrategySpec.groovy |  102 -
 .../AsyncWebRequestPromiseDecoratorSpec.groovy     |  117 -
 .../async/ControllersAsyncGrailsPluginSpec.groovy  |  165 +-
 .../async/GrailsWebRequestTaskDecoratorSpec.groovy |   64 -
 .../mvc/AsyncActionResultTransformerSpec.groovy    |  164 -
 grails-beans-dsl/build.gradle                      |   73 -
 .../compiler/beans/ConditionalOnGrailsEnv.java     |   56 -
 .../java/grails/compiler/beans/GrailsBeans.java    |  355 -
 .../beans/AutoConfigurationImportsWriter.java      |  279 -
 .../beans/GrailsBeansASTTransformation.java        | 3319 ---------
 .../compiler/beans/OnGrailsEnvCondition.java       |  109 -
 .../AutoConfigurationImportsWriterSpec.groovy      |  355 -
 .../beans/GrailsBeansASTTransformationSpec.groovy  | 7371 --------------------
 .../compiler/beans/OnGrailsEnvConditionSpec.groovy |  117 -
 .../{neo4j => hibernate5-micronaut}/build.gradle   |   68 +-
 .../{neo4j => hibernate7-micronaut}/build.gradle   |   68 +-
 grails-bom/{neo4j => micronaut}/build.gradle       |   65 +-
 grails-bootstrap/build.gradle                      |   50 +-
 .../org/grails/build/logging/ConsoleAnsi.java      |  146 -
 .../groovy/grails/build/logging/ConsoleLogger.java |    0
 .../groovy/grails/build/logging/GrailsConsole.java |  164 +-
 .../grails/build/logging/GrailsEclipseConsole.java |    0
 .../CandidateListCompletionHandler.java            |    0
 .../build/logging/GrailsConsoleAntBuilder.java     |    0
 .../build/logging/GrailsConsoleBuildListener.java  |    0
 .../logging/GrailsConsoleErrorPrintStream.java     |    0
 .../build/logging/GrailsConsolePrintStream.java    |    0
 .../org/grails/io/watch/DirectoryWatcher.java      |   74 +-
 .../build/logging/GrailsConsoleLoggingSpec.groovy  |  122 -
 .../grails/build/logging/GrailsConsoleSpec.groovy  |  298 -
 .../logging/GrailsConsoleCompleterSpec.groovy      |    0
 .../grails/build/logging/GrailsConsoleSpec.groovy  |  109 +
 .../CandidateListCompletionHandlerSpec.groovy      |    0
 .../grails/io/watch/DirectoryWatcherSpec.groovy    |  253 -
 grails-cache/build.gradle                          |    7 -
 .../grails/plugin/cache/CacheGrailsPlugin.groovy   |   99 +-
 .../cache/GrailsCacheAutoConfiguration.groovy      |   69 +
 ...ata.json => spring-configuration-metadata.json} |    0
 ...rk.boot.autoconfigure.AutoConfiguration.imports |    2 +-
 .../plugin/cache/CacheGrailsPluginSpec.groovy      |   73 +
 ...ovy => GrailsCacheAutoConfigurationSpec.groovy} |   87 +-
 .../codecs/Base64CodecExtensionMethods.groovy      |   14 +-
 .../org/grails/plugins/codecs/DigestUtils.groovy   |   85 +-
 .../plugins/codecs/HexCodecExtensionMethods.groovy |   52 +-
 .../codecs/MD5BytesCodecExtensionMethods.groovy    |    7 +-
 .../plugins/codecs/MD5CodecExtensionMethods.groovy |   10 +-
 .../codecs/SHA1BytesCodecExtensionMethods.groovy   |    7 +-
 .../codecs/SHA1CodecExtensionMethods.groovy        |    9 +-
 .../codecs/SHA256BytesCodecExtensionMethods.groovy |    7 +-
 .../codecs/SHA256CodecExtensionMethods.groovy      |    9 +-
 .../org/grails/web/codecs/Base64CodecTests.groovy  |   12 -
 .../org/grails/web/codecs/HexCodecTests.groovy     |   24 +-
 grails-codecs/build.gradle                         |    4 +-
 .../grails/plugins/codecs/CodecsConfiguration.java |    6 +-
 .../plugins/codecs/CodecsConfigurationSpec.groovy  |   48 -
 .../grails/common/aot/AheadOfTimeProcessing.java   |   54 -
 .../apache/grails/common/aot/RegistrableTypes.java |  251 -
 .../common/compiler/GroovyTransformOrder.groovy    |   15 +-
 .../grails/common/reflect/ReflectionUtils.java     |  196 -
 .../grails/common/aot/RegistrableTypesSpec.groovy  |  194 -
 .../common/reflect/ReflectionUtilsSpec.groovy      |  174 -
 .../common/reflect/beans/PublicCovariantBase.java  |   25 -
 .../grails/common/reflect/beans/PublicThing.java   |   25 -
 .../grails/common/reflect/beans/ThingFactory.java  |  106 -
 .../ConfigurationMetadataTransformation.groovy     |  349 -
 ...org.codehaus.groovy.transform.ASTTransformation |    1 -
 .../ConfigurationMetadataTransformationSpec.groovy |  700 --
 grails-console/build.gradle                        |    3 +-
 .../GrailsApplicationContextCommandRunner.groovy   |   52 +-
 .../ui/script/GrailsApplicationScriptRunner.groovy |    3 +-
 ...railsApplicationContextCommandRunnerSpec.groovy |  100 -
 grails-controllers/build.gradle                    |    4 +-
 .../main/groovy/grails/artefact/Controller.groovy  |   77 +-
 .../controller/support/AllowedMethodsHelper.groovy |    6 +-
 .../controller/support/RequestForwarder.groovy     |    2 +-
 .../controller/support/ResponseRedirector.groovy   |    2 +-
 .../controller/support/ResponseRenderer.groovy     |   22 +-
 .../controllers/aot/ControllerRuntimeHints.java    |   92 -
 .../compiler/web/ControllerActionTransformer.java  |  219 +-
 .../controllers/ControllersAutoConfiguration.java  |   50 +-
 .../GrailsControllersEnvironmentPostProcessor.java |   60 -
 ...ilsHiddenHttpMethodFilterAutoConfiguration.java |   74 -
 .../api/ControllersDomainBindingApi.java           |   73 +-
 .../src/main/resources/META-INF/spring.factories   |    4 +-
 .../main/resources/META-INF/spring/aot.factories   |    2 -
 ...rk.boot.autoconfigure.AutoConfiguration.imports |    1 -
 .../grails/artefact/ControllerRedirectSpec.groovy  |  230 -
 .../support/AllowedMethodsHelperSpec.groovy        |    2 +-
 .../controller/support/ResponseRendererSpec.groovy |  107 -
 .../aot/ControllerRuntimeHintsSpec.groovy          |   84 -
 ...tionTransformerSerializableParameterSpec.groovy |  171 -
 .../ControllersAutoConfigurationSpec.groovy        |  133 +-
 ...sControllersEnvironmentPostProcessorSpec.groovy |   55 -
 ...denHttpMethodFilterAutoConfigurationSpec.groovy |  148 -
 .../api/ControllersDomainBindingApiSpec.groovy     |  147 -
 grails-converters/build.gradle                     |    9 +-
 .../marshaller/json/GenericJavaBeanMarshaller.java |    9 +-
 .../marshaller/json/GroovyBeanMarshaller.java      |    8 +-
 .../marshaller/xml/GenericJavaBeanMarshaller.java  |   11 +-
 .../marshaller/xml/GroovyBeanMarshaller.java       |    8 +-
 .../groovy/grails/converters/XMLParseSpec.groovy   |   73 -
 .../beans/DynamicGroovyPersonFactory.groovy        |   41 -
 .../converters/beans/GroovyPersonFactory.groovy    |   81 -
 .../web/converters/beans/HiddenCovariantBase.java  |   28 -
 .../converters/beans/HiddenCovariantJavaBean.java  |   38 -
 .../web/converters/beans/JavaPersonFactory.java    |   92 -
 .../PackagePrivateStandaloneGroovyBean.groovy      |   41 -
 .../beans/PackagePrivateStandaloneJavaBean.java    |   36 -
 .../grails/web/converters/beans/PublicPerson.java  |   35 -
 .../json/NonPublicClassMarshallingSpec.groovy      |  314 -
 .../xml/NonPublicClassMarshallingSpec.groovy       |  322 -
 grails-core-cli-legacy/build.gradle                |   69 -
 .../grails/dev/commands/ApplicationCommand.groovy  |   77 -
 .../grails/dev/commands/ExecutionContext.groovy    |   55 -
 .../dev/commands/GrailsApplicationCommand.groovy   |   50 -
 .../dev/commands/io/FileSystemInteraction.groovy   |  146 -
 .../commands/io/FileSystemInteractionImpl.groovy   |  284 -
 .../dev/commands/template/TemplateException.groovy |   32 -
 .../dev/commands/template/TemplateRenderer.groovy  |  174 -
 .../commands/template/TemplateRendererImpl.groovy  |  235 -
 .../compat/LegacyApplicationCommandAdapter.groovy  |   90 -
 .../compat/LegacyApplicationCommandProvider.groovy |  163 -
 .../cli/LegacyCommandRegistryLoadingSpec.groovy    |  601 --
 .../LegacyApplicationCommandAdapterSpec.groovy     |  107 -
 grails-core/build.gradle                           |   40 +-
 .../core/cli/ApplicationCommandDiagnostics.groovy  |   87 -
 .../core/cli/ApplicationCommandProvider.groovy     |   32 -
 .../core/cli/ApplicationCommandRegistrar.groovy    |   32 -
 .../core/cli/ApplicationCommandTargetAware.groovy  |   29 -
 .../cli/ApplicationContextCommandRegistry.groovy   |  216 +-
 .../compiler/CommandFactoriesTransformation.groovy |   14 +-
 .../core/cli/template/TemplateRendererImpl.groovy  |    3 +-
 .../main/groovy/grails/boot/GrailsBanner.groovy    |  446 +-
 .../config/GrailsApplicationPostProcessor.groovy   |   55 +-
 .../boot/config/GrailsAutoConfiguration.groovy     |   69 +-
 ...GrailsEarlyPluginRegistrationPostProcessor.java |   39 +-
 .../config/GrailsEnvironmentPostProcessor.java     |   18 -
 .../boot/config/tools/ClassPathScanner.groovy      |    2 +-
 .../src/main/groovy/grails/config/Settings.groovy  |   56 +-
 .../PersistenceContextInterceptorExecutor.groovy   |    3 +-
 .../grails/util/AbstractTypeConvertingMap.java     |   17 -
 .../src/main/groovy/grails/util/GrailsUtil.java    |   42 +-
 .../core/GrailsBootstrapRegistryInitializer.java   |  139 -
 .../aot/AbstractBeanDefinitionExcludeFilter.java   |   48 -
 ...assesBeanFactoryInitializationAotProcessor.java |  155 -
 .../AutowireModeBeanRegistrationAotProcessor.java  |   92 -
 .../grails/core/aot/BeanRegistrarRuntimeHints.java |   73 -
 .../grails/core/aot/GrailsApiRuntimeHints.java     |   90 -
 .../grails/core/aot/GrailsBannerRuntimeHints.java  |   70 -
 .../grails/core/aot/GrailsClosureRuntimeHints.java |  156 -
 .../core/aot/GrailsResourceRuntimeHints.java       |   99 -
 .../aot/GroovyExtensionModuleRuntimeHints.java     |  152 -
 .../aot/VarargsBeanRegistrationAotProcessor.java   |  193 -
 .../core/plugins/DefaultPluginDiscovery.java       |   57 +-
 .../apache/grails/core/plugins/PluginUtils.java    |    2 -
 .../TagLibraryInvokerTypeCheckingExtension.groovy  |    7 -
 .../injection/ArtefactTypeAstTransformation.java   |   25 +-
 .../DefaultGrailsDomainClassInjector.java          |    7 -
 .../injection/EntityASTTransformation.java         |   20 +-
 .../GlobalGrailsClassInjectorTransformation.groovy |  815 +--
 .../injection/GrailsAwareInjectionOperation.java   |    2 -
 .../core/exceptions/DefaultErrorsPrinter.groovy    |    9 +-
 .../org/grails/core/io/MockFileResource.java       |    0
 .../org/grails/core/io/MockResourceLoader.java     |    0
 .../grails/core/io/MockStringResourceLoader.java   |    0
 .../core/io/support/GrailsFactoriesLoader.groovy   |   54 -
 .../org/grails/plugins/CoreGrailsPlugin.groovy     |  240 +-
 .../grails/plugins/MockGrailsPluginManager.java    |    0
 .../org/grails/plugins/MockPluginDiscovery.java    |    0
 .../plugins/ProfilingGrailsPluginManager.java      |   38 +-
 .../grails/plugins/core/CoreAutoConfiguration.java |   69 +
 .../org/grails/plugins/support/WatchPattern.groovy |    3 +-
 .../autoproxy/GroovyAwareAutoProxyCreators.java    |   83 -
 .../AbstractResourceLocatorPostProcessor.java      |   98 -
 ...sIgnoringComponentScanBeanDefinitionParser.java |  170 +-
 .../GrailsComponentScanPostProcessor.java          |   95 -
 .../support/GrailsPlaceholderConfigurer.java       |   14 +-
 .../PluginAwareResourceBundleMessageSource.java    |  308 +
 .../ReloadableResourceBundleMessageSource.java     |  735 ++
 .../transaction/GrailsTransactionAttribute.java    |   54 +-
 .../grails/transaction/MultiTransactionStatus.java |    2 +-
 .../additional-spring-configuration-metadata.json  |  522 +-
 .../grails-core/native-image.properties            |   30 -
 ...ata.json => spring-configuration-metadata.json} |  136 +-
 .../main/resources/META-INF/spring/aot.factories   |   17 -
 ...rk.boot.autoconfigure.AutoConfiguration.imports |    2 +-
 .../core/cli/ApplicationCommandProviderSpec.groovy |  822 ---
 .../grails/boot/GrailsBannerColourSpec.groovy      |  156 -
 .../grails/boot/GrailsBannerNativeMarkSpec.groovy  |  225 -
 .../boot/GrailsBannerVersionLookupSpec.groovy      |  226 -
 .../EarlyPluginRegistrationOrderingSpec.groovy     |   87 +-
 ...icationPostProcessorAnnotationConfigSpec.groovy |   98 -
 .../GrailsAutoConfigurationArtefactsSpec.groovy    |   79 -
 .../GrailsEnvironmentPostProcessorSpec.groovy      |   19 -
 ...tGrailsPluginManagerRegistryContractSpec.groovy |  152 -
 .../plugins/DefaultGrailsPluginManagerSpec.groovy  |  140 +-
 ...aceHolderConfigurerCorePluginRuntimeSpec.groovy |   73 +
 .../grails/util/ActiveProcessorCountForkTests.java |   58 -
 .../grails/util/GrailsUtilStackFiltererSpec.groovy |  163 -
 .../GrailsBootstrapRegistryInitializerSpec.groovy  |  295 -
 .../AbstractBeanDefinitionExcludeFilterSpec.groovy |   79 -
 ...eanFactoryInitializationAotProcessorSpec.groovy |  163 -
 ...wireModeBeanRegistrationAotProcessorSpec.groovy |   70 -
 .../core/aot/BeanRegistrarRuntimeHintsSpec.groovy  |   85 -
 .../core/aot/GrailsApiRuntimeHintsSpec.groovy      |   88 -
 .../core/aot/GrailsBannerRuntimeHintsSpec.groovy   |   79 -
 .../core/aot/GrailsClosureRuntimeHintsSpec.groovy  |  101 -
 .../core/aot/GrailsResourceRuntimeHintsSpec.groovy |  100 -
 .../GroovyExtensionModuleRuntimeHintsSpec.groovy   |  115 -
 .../VarargsBeanRegistrationAotProcessorSpec.groovy |  162 -
 .../grails/core/cli/ConfigReportCommandSpec.groovy |    0
 .../CommandFactoriesTransformationSpec.groovy      |   16 -
 .../grails/core/plugins/PluginDiscoverySpec.groovy |  276 +-
 .../DefaultDomainClassInjectorSpec.groovy          |   16 -
 ...balGrailsClassInjectorTransformationSpec.groovy | 1085 +--
 .../reporting/StackTraceFiltererSpec.groovy        |   95 +-
 .../plugins/CoreAutoConfigurationSpec.groovy       |  199 -
 .../grails/plugins/CoreGrailsPluginAotSpec.groovy  |  186 -
 .../plugins/CoreGrailsPluginRegistrarSpec.groovy   |  291 -
 .../ProfilingGrailsPluginManagerSpec.groovy        |  161 -
 .../grails/plugins/SpringBeanPackagesSpec.groovy   |   86 -
 .../GroovyAwareAutoProxyCreatorsSpec.groovy        |   90 -
 ...AbstractResourceLocatorPostProcessorSpec.groovy |  109 -
 .../context/ResourceBundleMessageSourceSpec.groovy |   67 +
 .../GrailsTransactionAttributeSpec.groovy          |  289 -
 .../org/grails/util/TypeConvertingMapTests.groovy  |   15 -
 .../grails/boot/version-in-a-resource.properties   |    5 -
 grails-core/src/test/resources/logback-test.xml    |   22 -
 .../grails/core/testing/support/LogCapture.groovy  |   99 -
 grails-data-docs/stage/build.gradle                |   11 +-
 grails-data-graphql/core/build.gradle              |    2 -
 .../grails/gorm/graphql/GraphQLEntityHelper.groovy |    4 +-
 .../groovy/org/grails/gorm/graphql/Schema.groovy   |    6 +-
 .../gorm/graphql/entity/EntityFetchOptions.java    |   41 +-
 .../graphql/entity/arguments/CustomArgument.groovy |    9 +-
 .../gorm/graphql/entity/dsl/GraphQLMapping.groovy  |   27 +-
 .../graphql/entity/dsl/helpers/Arguable.groovy     |    4 +-
 .../graphql/entity/dsl/helpers/ComplexTyped.groovy |   16 +-
 .../entity/operations/CustomOperation.groovy       |   12 +-
 .../property/impl/PersistentGraphQLProperty.groovy |   52 +-
 .../DefaultGraphQLDomainPropertyManager.groovy     |    2 +-
 .../fetcher/impl/CountEntityDataFetcher.groovy     |    8 +-
 .../gorm/graphql/testing/GraphQLSchemaSpec.groovy  |    0
 .../testing/MockDataFetchingEnvironment.groovy     |    0
 .../gorm/graphql/MongoSchemaSpec.groovy.disabled   |  122 +
 .../org/grails/gorm/graphql/SchemaSpec.groovy      |   16 +-
 .../binding/DataBinderNotFoundExceptionSpec.groovy |   41 -
 .../graphql/entity/EntityFetchOptionsSpec.groovy   |  105 -
 .../entity/arguments/SimpleArgumentSpec.groovy     |   89 -
 .../graphql/entity/dsl/GraphQLMappingSpec.groovy   |   35 +-
 .../entity/dsl/helpers/ComplexTypedSpec.groovy     |   69 -
 .../HibernatePersistentGraphQLPropertySpec.groovy  |   18 +-
 .../DataFetcherNotFoundExceptionSpec.groovy        |   43 -
 .../fetcher/impl/ClosureDataFetcherSpec.groovy     |   40 +-
 .../impl/ClosureDataFetchingEnvironmentSpec.groovy |   75 -
 .../fetcher/impl/CountEntityDataFetcherSpec.groovy |   61 -
 .../impl/PaginatedEntityDataFetcherSpec.groovy     |   87 -
 .../impl/PersistentPropertyDataFetcherSpec.groovy  |   43 -
 .../CustomMutationInterceptorInvokerSpec.groovy    |   38 -
 .../CustomQueryInterceptorInvokerSpec.groovy       |   38 -
 .../MutationInterceptorInvokerSpec.groovy          |   28 +-
 .../interceptor/QueryInterceptorInvokerSpec.groovy |   28 +-
 .../CachingGraphQLResponseHandlerSpec.groovy       |   54 -
 .../DefaultGraphQLErrorsResponseHandlerSpec.groovy |   19 -
 .../gorm/graphql/types/KeyClassQuerySpec.groovy    |   81 -
 .../EmbeddedInputObjectTypeBuilderSpec.groovy      |    2 +-
 .../scalars/coercing/CurrencyCoercionSpec.groovy   |   83 -
 .../types/scalars/coercing/DateCoercionSpec.groovy |  119 -
 .../scalars/coercing/SqlDateCoercionSpec.groovy    |  110 -
 .../types/scalars/coercing/TimeCoercionSpec.groovy |  102 -
 .../scalars/coercing/TimeZoneCoercionSpec.groovy   |   78 -
 .../scalars/coercing/TimestampCoercionSpec.groovy  |  102 -
 .../types/scalars/coercing/URICoercionSpec.groovy  |   91 -
 .../types/scalars/coercing/URLCoercionSpec.groovy  |   91 -
 .../types/scalars/coercing/UUIDCoercionSpec.groovy |   97 -
 .../coercing/jsr310/InstantCoercionSpec.groovy     |   96 -
 .../coercing/jsr310/LocalDateCoercionSpec.groovy   |  101 -
 .../jsr310/LocalDateTimeCoercionSpec.groovy        |   93 -
 .../coercing/jsr310/LocalTimeCoercionSpec.groovy   |   93 -
 .../jsr310/OffsetDateTimeCoercionSpec.groovy       |   94 -
 .../coercing/jsr310/OffsetTimeCoercionSpec.groovy  |   94 -
 .../jsr310/ZonedDateTimeCoercionSpec.groovy        |   94 -
 grails-data-graphql/plugin/build.gradle            |    4 -
 grails-data-hibernate5/core/build.gradle           |    5 +-
 .../AbstractHibernateGormInstanceApi.groovy        |  192 +-
 .../AbstractHibernateGormStaticApi.groovy          |   14 +-
 .../orm/hibernate/HibernateGormApiFactory.groovy   |    2 +-
 .../orm/hibernate/HibernateGormEnhancer.groovy     |    5 +-
 .../orm/hibernate/HibernateGormStaticApi.groovy    |  115 +-
 .../org/grails/orm/hibernate/HibernateSession.java |   11 +-
 .../orm/hibernate/cfg/GrailsHibernateUtil.java     |   19 +-
 .../hibernate/cfg/HibernateMappingBuilder.groovy   |    6 +-
 .../orm/hibernate/cfg/HibernateMappingContext.java |    1 -
 .../cfg/HibernateMappingContextConfiguration.java  |   55 +-
 .../compiler/HibernateEntityTransformation.groovy  |    5 +-
 .../HibernateConnectionSourceFactory.java          |   13 +-
 .../HibernateConnectionSourceSettings.groovy       |    2 +-
 .../query/AbstractHibernateCriteriaBuilder.java    |    9 +-
 .../hibernate/query/GrailsHibernateQueryUtils.java |   32 +-
 .../hibernate/support/HibernateRuntimeUtils.groovy |    3 +-
 ...ata.json => spring-configuration-metadata.json} |    0
 .../tests/Hibernate5JoinedLockDialectSpec.groovy   |  192 -
 .../gorm/tests/Hibernate5RefreshLockSpec.groovy    | 1945 ------
 .../gorm/tests/SortArgumentValidationSpec.groovy   |  206 -
 .../HibernateDatastoreMultiTenancySpec.groovy      |   48 -
 ...HibernateMappingContextConfigurationSpec.groovy |  263 -
 .../cfg/HibernateMappingContextSpec.groovy         |   84 +-
 .../HibernateConnectionSourceFactorySpec.groovy    |  145 -
 .../MultipleDataSourceConnectionsSpec.groovy       |   43 -
 grails-data-hibernate5/dbmigration/build.gradle    |    6 -
 .../databasemigration/DbUpdateCommandSpec.groovy   |    0
 .../DatabaseMigrationGrailsPlugin.groovy           |    2 +-
 ...ata.json => spring-configuration-metadata.json} |    0
 ...ationContextDatabaseMigrationCommandSpec.groovy |    9 -
 .../cli/DatabaseMigrationCommandConfigSpec.groovy  |    0
 .../cli/DatabaseMigrationCommandSpec.groovy        |    0
 .../cli/DbmChangelogSyncCommandSpec.groovy         |    0
 .../cli/DbmChangelogSyncCommandSqlSpec.groovy      |    0
 .../cli/DbmClearChecksumsCommandSpec.groovy        |    0
 .../dbmigration/cli/DbmDiffCommandSpec.groovy      |    0
 .../dbmigration/cli/DbmDropAllCommandSpec.groovy   |    0
 .../DbmFutureRollbackCountSqlCommandSpec.groovy    |    0
 .../cli/DbmFutureRollbackSqlCommandSpec.groovy     |    0
 .../cli/DbmGenerateChangelogCommandSpec.groovy     |    0
 .../cli/DbmGenerateGormChangelogCommandSpec.groovy |    0
 .../dbmigration/cli/DbmGormDiffCommandSpec.groovy  |    0
 .../dbmigration/cli/DbmListLocksCommandSpec.groovy |    0
 .../cli/DbmMarkNextChangesetRanCommandSpec.groovy  |    0
 .../DbmMarkNextChangesetRanSqlCommandSpec.groovy   |    0
 .../cli/DbmPreviousChangesetSqlCommandSpec.groovy  |    0
 .../cli/DbmReleaseLocksCommandSpec.groovy          |    0
 .../dbmigration/cli/DbmRollbackCommandSpec.groovy  |    0
 .../cli/DbmRollbackCountCommandSpec.groovy         |    0
 .../cli/DbmRollbackCountSqlCommandSpec.groovy      |    0
 .../cli/DbmRollbackSqlCommandSpec.groovy           |    0
 .../cli/DbmRollbackToDateCommandSpec.groovy        |    0
 .../cli/DbmRollbackToDateSqlCommandSpec.groovy     |    0
 .../dbmigration/cli/DbmStatusCommandSpec.groovy    |    0
 .../dbmigration/cli/DbmUpdateCommandSpec.groovy    |    0
 .../cli/DbmUpdateCountCommandSpec.groovy           |    0
 .../cli/DbmUpdateCountSqlCommandSpec.groovy        |    0
 .../dbmigration/cli/DbmUpdateSqlCommandSpec.groovy |    0
 .../dbmigration/cli/DbmValidateCommandSpec.groovy  |    0
 .../cli/ScriptDatabaseMigrationCommandSpec.groovy  |    0
 .../liquibase/GroovyChangeLogSpec.groovy           |    0
 .../liquibase/GroovyPreconditionSpec.groovy        |    0
 grails-data-hibernate5/docs/build.gradle           |    1 +
 .../multipleDataSources/dataSourceNamespaces.adoc  |   13 -
 .../docs/asciidoc/persistenceBasics/locking.adoc   |  159 +-
 .../docs/src/docs/asciidoc/querying/finders.adoc   |    2 -
 grails-data-hibernate5/grails-plugin/build.gradle  |    7 +-
 .../data/hibernate5/cli/SchemaExportCommand.groovy |   23 +-
 .../HibernateDatastoreSpringInitializer.groovy     |   10 +-
 .../plugin/hibernate/HibernateGrailsPlugin.groovy  |    4 +-
 .../commands/SchemaExportCommandSpec.groovy        |  140 -
 grails-data-hibernate7/core/build.gradle           |    5 +-
 .../groovy/grails/orm/CriteriaMethodInvoker.java   |   17 +-
 .../orm/hibernate/EventListenerIntegrator.java     |   68 +-
 .../orm/hibernate/HibernateGormEnhancer.groovy     |    2 +-
 .../orm/hibernate/HibernateGormInstanceApi.groovy  |  118 +-
 .../orm/hibernate/HibernateGormStaticApi.groovy    |  135 +-
 .../org/grails/orm/hibernate/HibernateSession.java |   11 +-
 .../orm/hibernate/cfg/HibernateMappingContext.java |    1 -
 .../cfg/HibernateMappingContextConfiguration.java  |   46 +-
 .../cfg/domainbinding/binder/ColumnBinder.java     |    8 +-
 .../cfg/domainbinding/binder/EnumTypeBinder.java   |   59 +-
 .../domainbinding/binder/GrailsPropertyBinder.java |    6 +-
 .../binder/NumericColumnConstraintsBinder.java     |   36 +-
 .../cfg/domainbinding/binder/PropertyBinder.java   |    8 +-
 .../domainbinding/binder/SimpleValueBinder.java    |    5 +-
 .../binder/StringColumnConstraintsBinder.java      |   20 +-
 .../generator/GrailsSequenceStyleGenerator.java    |   24 -
 .../hibernate/HibernateBasicEnumProperty.java      |   80 -
 .../hibernate/HibernateEnumProperty.java           |   47 +-
 .../hibernate/HibernateMappingFactory.groovy       |   11 +-
 .../hibernate/HibernateToManyProperty.java         |   72 +-
 .../secondpass/BasicCollectionElementBinder.java   |    9 +-
 .../domainbinding/util/CascadeBehaviorFetcher.java |   25 +-
 .../cfg/domainbinding/util/GrailsEnumType.java     |   40 +-
 .../domainbinding/util/TableForManyCalculator.java |    5 +-
 .../compiler/HibernateEntityTransformation.groovy  |    5 +-
 .../HibernateConnectionSourceSettings.groovy       |    8 +-
 .../orm/hibernate/query/HqlListQueryBuilder.java   |   40 +-
 .../support/ClosureEventTriggeringInterceptor.java |   96 -
 ...rnateDatastoreConnectionSourcesRegistrar.groovy |    7 +-
 ...ata.json => spring-configuration-metadata.json} |    0
 .../grails/gorm/tests/EnumHasManyDdlSpec.groovy    |  248 -
 .../gorm/tests/Hibernate7RefreshLockSpec.groovy    | 1926 -----
 .../gorm/tests/HibernateMappingFactorySpec.groovy  |    7 +-
 .../groovy/grails/gorm/tests/Issue16349Spec.groovy |  228 -
 .../grails/gorm/tests/RLikeHibernate7Spec.groovy   |    9 +-
 .../gorm/tests/SortArgumentValidationSpec.groovy   |  389 --
 .../tests/hibernatequery/HibernateQuerySpec.groovy |   41 -
 .../grails/orm/CriteriaMethodInvokerSpec.groovy    |   45 -
 .../hibernate/EventListenerIntegratorSpec.groovy   |  111 -
 .../GormNumericTypeColumnIntegrationSpec.groovy    |  101 -
 .../GormNumericTypeColumnPrecisionSpec.groovy      |  108 -
 .../GormTextTypeColumnIntegrationSpec.groovy       |  105 -
 .../hibernate/GormTextTypeColumnLengthSpec.groovy  |   99 -
 .../HibernateDatastoreMultiTenancySpec.groovy      |   48 -
 .../hibernate/HibernateGormInstanceApiSpec.groovy  |   60 +-
 .../cfg/GrailsHibernatePersistentEntitySpec.groovy |    3 -
 ...HibernateMappingContextConfigurationSpec.groovy |  157 -
 .../cfg/HibernateMappingContextSpec.groovy         |  131 +-
 .../cfg/domainbinding/ColumnBinderSpec.groovy      |   36 +-
 .../cfg/domainbinding/EnumTypeBinderSpec.groovy    |   52 +-
 .../domainbinding/GrailsPropertyBinderSpec.groovy  |   68 -
 .../NumericColumnConstraintsBinderSpec.groovy      |   85 +-
 .../cfg/domainbinding/PropertyBinderSpec.groovy    |   28 +-
 .../domainbinding/SequenceGeneratorsSpec.groovy    |   45 -
 .../cfg/domainbinding/SimpleValueBinderSpec.groovy |   70 +-
 .../StringColumnConstraintsBinderSpec.groovy       |   78 +-
 .../TableForManyCalculatorSpec.groovy              |   25 -
 .../GrailsSequenceStyleGeneratorSpec.groovy        |   89 +-
 .../hibernate/HibernateBasicPropertySpec.groovy    |   40 +-
 .../hibernate/HibernateToManyPropertySpec.groovy   |  104 +-
 .../BasicCollectionElementBinderSpec.groovy        |   11 +-
 ...rnateConnectionSourceSettingsBuilderSpec.groovy |   14 -
 .../HibernateConnectionSourceSettingsSpec.groovy   |   23 +-
 .../MultipleDataSourceConnectionsSpec.groovy       |   43 -
 .../hibernate/query/HqlListQueryBuilderSpec.groovy |  125 -
 .../ClosureEventTriggeringInterceptorSpec.groovy   |  117 -
 ...eDatastoreConnectionSourcesRegistrarSpec.groovy |   20 +-
 grails-data-hibernate7/dbmigration/build.gradle    |    8 +-
 .../databasemigration/DbUpdateCommandSpec.groovy   |    0
 ...ata.json => spring-configuration-metadata.json} |    0
 ...ationContextDatabaseMigrationCommandSpec.groovy |    4 -
 .../cli/DatabaseMigrationCommandConfigSpec.groovy  |    0
 .../cli/DatabaseMigrationCommandSpec.groovy        |    0
 .../cli/DbmChangelogSyncCommandSpec.groovy         |    0
 .../cli/DbmChangelogSyncCommandSqlSpec.groovy      |    0
 .../cli/DbmClearChecksumsCommandSpec.groovy        |    0
 .../dbmigration/cli/DbmDiffCommandSpec.groovy      |    0
 .../dbmigration/cli/DbmDropAllCommandSpec.groovy   |    0
 .../DbmFutureRollbackCountSqlCommandSpec.groovy    |    0
 .../cli/DbmFutureRollbackSqlCommandSpec.groovy     |    0
 .../cli/DbmGenerateChangelogCommandSpec.groovy     |    0
 .../cli/DbmGenerateGormChangelogCommandSpec.groovy |    0
 .../dbmigration/cli/DbmGormDiffCommandSpec.groovy  |    0
 .../dbmigration/cli/DbmListLocksCommandSpec.groovy |    0
 .../cli/DbmMarkNextChangesetRanCommandSpec.groovy  |    0
 .../DbmMarkNextChangesetRanSqlCommandSpec.groovy   |    0
 .../cli/DbmPreviousChangesetSqlCommandSpec.groovy  |    0
 .../cli/DbmReleaseLocksCommandSpec.groovy          |    0
 .../dbmigration/cli/DbmRollbackCommandSpec.groovy  |    0
 .../cli/DbmRollbackCountCommandSpec.groovy         |    0
 .../cli/DbmRollbackCountSqlCommandSpec.groovy      |    0
 .../cli/DbmRollbackSqlCommandSpec.groovy           |    0
 .../cli/DbmRollbackToDateCommandSpec.groovy        |    0
 .../cli/DbmRollbackToDateSqlCommandSpec.groovy     |    0
 .../dbmigration/cli/DbmStatusCommandSpec.groovy    |    0
 .../dbmigration/cli/DbmUpdateCommandSpec.groovy    |    0
 .../cli/DbmUpdateCountCommandSpec.groovy           |    0
 .../cli/DbmUpdateCountSqlCommandSpec.groovy        |    0
 .../dbmigration/cli/DbmUpdateSqlCommandSpec.groovy |    0
 .../dbmigration/cli/DbmValidateCommandSpec.groovy  |    0
 .../cli/ScriptDatabaseMigrationCommandSpec.groovy  |    0
 .../liquibase/GroovyChangeLogSpec.groovy           |    0
 .../liquibase/GroovyPreconditionSpec.groovy        |    0
 grails-data-hibernate7/docs/build.gradle           |    1 +
 .../eventsAutoTimestamping.adoc                    |    6 -
 .../ormdsl/customNamingStrategy.adoc               |    4 -
 .../ormdsl/optimisticLockingAndVersioning.adoc     |    4 +-
 .../asciidoc/gettingStarted/hibernateVersions.adoc |   12 +
 .../multipleDataSources/dataSourceNamespaces.adoc  |   13 -
 .../docs/asciidoc/persistenceBasics/locking.adoc   |  136 +-
 .../docs/src/docs/asciidoc/querying/finders.adoc   |    2 -
 grails-data-hibernate7/grails-plugin/build.gradle  |    6 -
 .../data/hibernate7/cli/SchemaExportCommand.groovy |   23 +-
 .../HibernateDatastoreSpringInitializer.groovy     |   10 +-
 .../commands/SchemaExportCommandSpec.groovy        |  140 -
 grails-data-mongodb/boot-plugin/build.gradle       |    5 +-
 .../MongoDbGormAutoConfiguration.groovy            |   32 +-
 .../MongoDbGormAutoConfigurationCloseSpec.groovy   |  114 +-
 .../encoders/BasicCollectionTypeEncoder.groovy     |    3 +-
 .../grails/datastore/bson/json/JsonScanner.java    |    5 +-
 .../org/grails/datastore/bson/query/BsonQuery.java |  126 +-
 .../codecs/CodecCustomTypeMarshallerSpec.groovy    |   79 -
 .../bson/codecs/CodecExtensionsSpec.groovy         |  450 --
 .../datastore/bson/codecs/SimpleCodecsSpec.groovy  |  256 -
 .../decoders/BasicCollectionTypeDecoderSpec.groovy |  155 -
 .../codecs/decoders/CustomTypeDecoderSpec.groovy   |  146 -
 .../decoders/EmbeddedCollectionDecoderSpec.groovy  |  148 -
 .../codecs/decoders/EmbeddedDecoderSpec.groovy     |  120 -
 .../codecs/decoders/IdentityDecoderSpec.groovy     |  120 -
 .../bson/codecs/decoders/SimpleDecoderSpec.groovy  |  158 -
 .../decoders/TemporalTypeDecodersSpec.groovy       |   64 -
 .../codecs/decoders/TenantIdDecoderSpec.groovy     |   91 -
 .../datastore/bson/codecs/domain/Profile.groovy    |   36 -
 .../encoders/BasicCollectionTypeEncoderSpec.groovy |  179 -
 .../codecs/encoders/CustomTypeEncoderSpec.groovy   |  116 -
 .../encoders/EmbeddedCollectionEncoderSpec.groovy  |  213 -
 .../codecs/encoders/EmbeddedEncoderSpec.groovy     |  153 -
 .../codecs/encoders/IdentityEncoderSpec.groovy     |  215 -
 .../bson/codecs/encoders/SimpleEncoderSpec.groovy  |  189 -
 .../encoders/TemporalTypeEncodersSpec.groovy       |   70 -
 .../codecs/encoders/TenantIdEncoderSpec.groovy     |   65 -
 .../datastore/bson/json/JsonReaderSpec.groovy      |  457 --
 .../datastore/bson/json/JsonWriterSpec.groovy      |  342 -
 .../datastore/bson/query/BsonQuerySpec.groovy      |  217 +-
 grails-data-mongodb/core/build.gradle              |   14 +-
 .../main/groovy/grails/mongodb/MongoEntity.groovy  |    6 +-
 .../MongoDbDataStoreSpringInitializer.groovy       |   29 +-
 .../gorm/mongo/MongoEntityTraitProvider.groovy     |   15 -
 .../gorm/mongo/MongoGormApiFactory.groovy          |    4 +-
 .../datastore/gorm/mongo/MongoGormEnhancer.groovy  |    4 +-
 .../datastore/gorm/mongo/api/MongoStaticApi.groovy |   25 +-
 .../datastore/gorm/mongo/simple/EnumType.groovy    |    3 +-
 .../mapping/mongo/AbstractMongoSession.java        |   14 +-
 .../mapping/mongo/MongoCodecSession.groovy         |  105 +-
 .../datastore/mapping/mongo/MongoDatastore.java    | 1011 +--
 .../datastore/mapping/mongo/MongoSession.java      |  148 +-
 .../datastore/mapping/mongo/MongoTransaction.java  |   11 +-
 .../mapping/mongo/config/MongoMappingContext.java  |   47 +-
 .../mapping/mongo/config/MongoSettings.groovy      |   48 +-
 .../AbstractMongoConnectionSourceSettings.groovy   |   22 -
 .../mongo/connections/MongoConnectionSource.groovy |  100 -
 .../MongoConnectionSourceFactory.groovy            |    9 +-
 .../mongo/connections/StringIdSettings.groovy      |    2 +-
 .../engine/AbstractMongoObectEntityPersister.java  |   36 +-
 .../mapping/mongo/engine/MongoEntityPersister.java |   18 +-
 .../mapping/mongo/engine/MongoIdCoercion.java      |   24 -
 .../engine/codecs/PersistentEntityCodec.groovy     |   39 +-
 .../datastore/mapping/mongo/query/MongoQuery.java  |   73 +-
 ...toreSpringInitializerBeanDefinitionsSpec.groovy |   85 -
 .../groovy/grails/mongodb/geo/DistanceSpec.groovy  |   63 -
 .../mongo/core/GrailsDataMongoTckManager.groovy    |   34 +-
 .../core/GrailsDataMongoTckManagerSpec.groovy      |   71 -
 .../mongo/BrokenManyToManyAssociationSpec.groovy   |    3 +-
 .../gorm/mongo/BuildIndexesAsyncSpec.groovy        |  247 -
 .../mongo/BuildIndexesBackgroundFailureSpec.groovy |  198 -
 .../BuildIndexesClassificationCostSpec.groovy      |  168 -
 .../gorm/mongo/BuildIndexesDisabledSpec.groovy     |  110 -
 .../mongo/BuildIndexesEnabledByDefaultSpec.groovy  |   77 -
 .../mongo/BuildIndexesFailureSummarySpec.groovy    |  135 -
 .../gorm/mongo/BuildIndexesHookSpec.groovy         |  141 -
 .../gorm/mongo/BuildIndexesKeyOrderSpec.groovy     |   93 -
 .../gorm/mongo/BuildIndexesLifecycleSpec.groovy    |  326 -
 .../gorm/mongo/BuildIndexesNameConflictSpec.groovy |  132 -
 .../gorm/mongo/BuildIndexesOnDemandSpec.groovy     |  191 -
 .../BuildIndexesPartialClassificationSpec.groovy   |  141 -
 .../mongo/BuildIndexesRecreateSummarySpec.groovy   |   95 -
 .../mongo/BuildIndexesStaleSnapshotSpec.groovy     |  124 -
 .../gorm/mongo/BuildIndexesSummaryLogSpec.groovy   |  137 -
 .../mongo/BuildIndexesUnfinishedSummarySpec.groovy |  143 -
 .../BuildIndexesUnreadableIndexListSpec.groovy     |  136 -
 .../grails/datastore/gorm/mongo/CapturedLog.groovy |   70 -
 .../EmbeddedCollectionDirtyTrackingSpec.groovy     |  159 -
 .../EmbeddedWithNonEmbeddedCollectionsSpec.groovy  |    9 +-
 .../datastore/gorm/mongo/FailingMongoClient.groovy |   84 -
 .../mongo/HasManyReassignDirtyTrackingSpec.groovy  |   83 -
 .../gorm/mongo/MapCriterionValueSpec.groovy        |  128 -
 .../gorm/mongo/MongoEntityIdentityTypeSpec.groovy  |  129 -
 .../gorm/mongo/MultipleConnectionsSpec.groovy      |  205 +-
 .../mongo/PortableIdentityPersistenceSpec.groovy   |   47 -
 .../gorm/mongo/SwitchDatabaseAtRuntimeSpec.groovy  |   75 -
 .../gorm/mongo/TextIndexViaAttributesSpec.groovy   |   31 +-
 .../bugs/MappingEngineStringIdStorageSpec.groovy   |  458 --
 .../gorm/mongo/bugs/MongoIdCoercionSpec.groovy     |  161 -
 .../bugs/StringIdAssociationStorageSpec.groovy     |  639 --
 .../bugs/StringIdDefaultStoredAsConfigSpec.groovy  |   60 +-
 .../bugs/StringIdWithObjectIdStorageSpec.groovy    |   31 -
 .../BuildIndexesPerConnectionSpec.groovy           |  310 -
 .../BuildIndexesSharedDeclarationSpec.groovy       |   79 -
 .../CheckpointRestoreConnectionsSpec.groovy        |  111 -
 .../connections/SchemaBasedMultiTenancySpec.groovy |   38 +-
 .../SuppliedMongoClientSettingsSpec.groovy         |  206 -
 .../MongoTransactionDisabledSpec.groovy            |   41 +-
 .../mongo/transactions/MongoTransactionSpec.groovy |   28 +-
 .../mongo/MongoDatastoreExternalClientSpec.groovy  |    7 -
 .../mongo/MongoDatastoreLifecycleSpec.groovy       |  363 -
 .../config/MongoConfigurationMetadataSpec.groovy   |   71 -
 .../config/MongoConnectionSourceFactorySpec.groovy |    4 -
 .../MongoConnectionSourceSettingsSpec.groovy       |  130 -
 .../mongo/config/MongoMappingContextSpec.groovy    |  113 -
 .../connections/MongoConnectionSourceSpec.groovy   |  120 -
 .../mongo/engine/MongoIdCoercionSpec.groovy        |  187 -
 .../core/src/test/resources/logback-test.xml       |   34 -
 grails-data-mongodb/docs/build.gradle              |    1 +
 .../asciidoc/gettingStarted/advancedConfig.adoc    |   51 +-
 .../asciidoc/gettingStarted/embeddedMongo.adoc     |  229 -
 .../asciidoc/gettingStarted/springDataInterop.adoc |    4 +-
 .../docs/src/docs/asciidoc/index.adoc              |    3 -
 .../docs/asciidoc/introduction/releaseNotes.adoc   |    8 +-
 .../docs/asciidoc/introduction/upgradeNotes.adoc   |   65 -
 .../multipleDataSources/mongoClientSwitching.adoc  |    4 +-
 .../docs/asciidoc/objectMapping/dirtyChecking.adoc |   30 +-
 .../docs/asciidoc/objectMapping/idGeneration.adoc  |   70 +-
 .../src/docs/asciidoc/querying/queryIndexes.adoc   |  155 -
 .../src/docs/asciidoc/querying/queryingBasics.adoc |   51 -
 .../docs/src/docs/asciidoc/testing.adoc            |    2 +-
 .../docs/src/docs/asciidoc/transactions.adoc       |   30 +-
 grails-data-mongodb/embedded/build.gradle          |   87 -
 .../mongodb/embedded/EmbeddedMongoBackend.java     |   58 -
 .../mongodb/embedded/EmbeddedMongoInitializer.java |  452 --
 .../mongodb/embedded/EmbeddedMongoLifecycle.java   |   85 -
 .../mongodb/embedded/EmbeddedMongoSettings.java    |  132 -
 .../mongodb/embedded/FlapdoodleMongoBackend.java   |  277 -
 .../mongodb/embedded/InMemoryMongoBackend.java     |  167 -
 .../gorm/mongodb/embedded/ReplicaSetInitiator.java |  115 -
 .../mongodb/embedded/RunningEmbeddedMongo.java     |   66 -
 .../src/main/resources/META-INF/spring.factories   |    2 -
 .../embedded/EmbeddedMongoInitializerSpec.groovy   |  635 --
 .../embedded/EmbeddedMongoLifecycleSpec.groovy     |  374 -
 .../embedded/EmbeddedMongoReplicaSetSpec.groovy    |  149 -
 .../embedded/EmbeddedMongoSettingsSpec.groovy      |   70 -
 .../embedded/FlapdoodleMongoBackendSpec.groovy     |   56 -
 .../embedded/InMemoryMongoBackendSpec.groovy       |  109 -
 .../embedded/ContextStoppedServerApplication.java  |   56 -
 grails-data-mongodb/ext/build.gradle               |    4 -
 .../mongo/extensions/MongoExtensionsSpec.groovy    | 1195 ----
 grails-data-mongodb/grails-plugin/build.gradle     |   10 -
 .../plugins/mongodb/MongodbGrailsPlugin.groovy     |    2 +-
 ...ata.json => spring-configuration-metadata.json} |   16 +-
 .../plugins/mongodb/MongodbGrailsPluginSpec.groovy |  117 -
 grails-data-mongodb/spring-data/build.gradle       |    9 +-
 .../SpringDataMongoGormAutoConfiguration.groovy    |    7 +-
 .../DatastoreMongoClientDatabaseFactory.java       |   52 -
 ...SharedSessionMongoTransactionManagerSpec.groovy |  137 -
 ...ataMongoGormAutoConfigurationContextSpec.groovy |   20 -
 .../SpringDataMongoGormRestoreSpec.groovy          |   65 -
 .../springdata/UnifiedMongoTransactionSpec.groovy  |   44 +-
 .../GormSpringDataSessionSupportSpec.groovy        |   11 +-
 grails-data-neo4j/README.md                        |   25 +-
 grails-data-neo4j/boot-plugin/build.gradle         |   60 +-
 .../autoconfigure/Neo4jAutoConfiguration.groovy    |   16 +-
 .../Neo4jAutoConfigurationSpec.groovy              |   17 +-
 grails-data-neo4j/build.gradle                     |  374 +
 grails-data-neo4j/core/build.gradle                |   97 -
 .../gorm/neo4j/Neo4jGormApiFactory.groovy          |   50 -
 .../datastore/gorm/neo4j/engine/Neo4jQuery.groovy  |  969 ---
 .../datastore/gorm/neo4j/parsers/PlingStemmer.java |  966 ---
 .../proxy/HashcodeEqualsAwareProxyFactory.java     |  118 -
 .../tests/HasManyReassignDirtyCheckingSpec.groovy  |   77 -
 .../grails/gorm/tests/NamedConnectionsSpec.groovy  |  150 -
 .../neo4j/core/GrailsDataNeo4jTckManager.groovy    |  139 -
 .../data/neo4j/core/Neo4jGormDatastoreSpec.groovy  |   46 -
 .../gorm/neo4j/Neo4jMappingContextSpec.groovy      |   71 -
 ...ails.data.testing.tck.base.GrailsDataTckManager |    1 -
 grails-data-neo4j/docs/build.gradle                |  239 +-
 .../docs/asciidoc/gettingStarted/springBoot.adoc   |    2 +-
 .../docs/asciidoc/gettingStarted/standalone.adoc   |    2 +-
 .../docs/asciidoc/introduction/releaseNotes.adoc   |    6 -
 .../src/docs/asciidoc/introduction/upgrading.adoc  |    4 -
 .../multipleDataSources/boltDriverSwitching.adoc   |    4 +-
 .../multipleDataSources/configuration.adoc         |    2 +-
 .../examples/grails3-neo4j-hibernate/build.gradle  |   88 +
 .../grails3-neo4j-hibernate/gradle.properties      |    9 +-
 .../assets/images/apple-touch-icon-retina.png      |  Bin
 .../grails-app/assets/images/apple-touch-icon.png  |  Bin
 .../grails-app/assets/images/favicon.ico           |  Bin
 .../grails-app/assets/images/grails_logo.png       |  Bin
 .../grails-app/assets/images/skin/database_add.png |  Bin
 .../assets/images/skin/database_delete.png         |  Bin
 .../assets/images/skin/database_edit.png           |  Bin
 .../assets/images/skin/database_save.png           |  Bin
 .../assets/images/skin/database_table.png          |  Bin
 .../grails-app/assets/images/skin/exclamation.png  |  Bin
 .../grails-app/assets/images/skin/house.png        |  Bin
 .../grails-app/assets/images/skin/information.png  |  Bin
 .../grails-app/assets/images/skin/shadow.jpg       |  Bin
 .../grails-app/assets/images/skin/sorted_asc.gif   |  Bin
 .../grails-app/assets/images/skin/sorted_desc.gif  |  Bin
 .../grails-app/assets/images/spinner.gif           |  Bin
 .../grails-app/assets/javascripts/application.js   |    0
 .../grails-app/assets/stylesheets/application.css  |    0
 .../grails-app/assets/stylesheets/errors.css       |    0
 .../grails-app/assets/stylesheets/main.css         |    0
 .../grails-app/assets/stylesheets/mobile.css       |    0
 .../grails-app/conf/application.yml                |    0
 .../grails-app/conf/logback.xml                    |    0
 .../grails-app/conf/spring/resources.groovy        |    0
 .../grails-app/controllers/UrlMappings.groovy      |    0
 .../functional/tests/AuthorController.groovy       |    0
 .../functional/tests/BookController.groovy         |    0
 .../domain/functional/tests/Author.groovy          |    0
 .../grails-app/domain/functional/tests/Book.groovy |    0
 .../grails-app/i18n/messages.properties            |    0
 .../grails-app/i18n/messages_cs_CZ.properties      |    0
 .../grails-app/i18n/messages_da.properties         |    0
 .../grails-app/i18n/messages_de.properties         |    0
 .../grails-app/i18n/messages_es.properties         |    0
 .../grails-app/i18n/messages_fr.properties         |    0
 .../grails-app/i18n/messages_it.properties         |    0
 .../grails-app/i18n/messages_ja.properties         |    0
 .../grails-app/i18n/messages_nb.properties         |    0
 .../grails-app/i18n/messages_nl.properties         |    0
 .../grails-app/i18n/messages_pl.properties         |    0
 .../grails-app/i18n/messages_pt_BR.properties      |    0
 .../grails-app/i18n/messages_pt_PT.properties      |    0
 .../grails-app/i18n/messages_ru.properties         |    0
 .../grails-app/i18n/messages_sv.properties         |    0
 .../grails-app/i18n/messages_th.properties         |    0
 .../grails-app/i18n/messages_zh_CN.properties      |    0
 .../grails-app/init/BootStrap.groovy               |    0
 .../init/functional/tests/Application.groovy       |    0
 .../grails-app/views/author/create.gsp             |    0
 .../grails-app/views/author/edit.gsp               |    0
 .../grails-app/views/author/index.gsp              |    0
 .../grails-app/views/author/show.gsp               |    0
 .../grails-app/views/book/create.gsp               |    0
 .../grails-app/views/book/edit.gsp                 |    0
 .../grails-app/views/book/index.gsp                |    0
 .../grails-app/views/book/show.gsp                 |    0
 .../grails-app/views/error.gsp                     |    0
 .../grails-app/views/index.gsp                     |    0
 .../grails-app/views/layouts/main.gsp              |    0
 .../grails-app/views/notFound.gsp                  |    0
 .../functional/tests/AuthorControllerSpec.groovy   |   27 +-
 .../functional/tests/BookControllerSpec.groovy     |   26 +-
 .../functional/tests/Neo4jWithHibernateSpec.groovy |    8 -
 .../examples/grails3-neo4j/build.gradle            |   90 +
 .../examples/grails3-neo4j/gradle.properties       |    9 +-
 .../assets/images/apple-touch-icon-retina.png      |  Bin
 .../grails-app/assets/images/apple-touch-icon.png  |  Bin
 .../grails-app/assets/images/favicon.ico           |  Bin
 .../grails-app/assets/images/grails_logo.png       |  Bin
 .../grails-app/assets/images/skin/database_add.png |  Bin
 .../assets/images/skin/database_delete.png         |  Bin
 .../assets/images/skin/database_edit.png           |  Bin
 .../assets/images/skin/database_save.png           |  Bin
 .../assets/images/skin/database_table.png          |  Bin
 .../grails-app/assets/images/skin/exclamation.png  |  Bin
 .../grails-app/assets/images/skin/house.png        |  Bin
 .../grails-app/assets/images/skin/information.png  |  Bin
 .../grails-app/assets/images/skin/shadow.jpg       |  Bin
 .../grails-app/assets/images/skin/sorted_asc.gif   |  Bin
 .../grails-app/assets/images/skin/sorted_desc.gif  |  Bin
 .../grails-app/assets/images/spinner.gif           |  Bin
 .../grails-app/assets/javascripts/application.js   |    0
 .../grails-app/assets/stylesheets/application.css  |    0
 .../grails-app/assets/stylesheets/errors.css       |    0
 .../grails-app/assets/stylesheets/main.css         |    0
 .../grails-app/assets/stylesheets/mobile.css       |    0
 .../grails3-neo4j}/grails-app/conf/application.yml |    0
 .../grails3-neo4j}/grails-app/conf/logback.xml     |    0
 .../grails-app/conf/spring/resources.groovy        |    0
 .../grails-app/controllers/UrlMappings.groovy      |    0
 .../functional/tests/BookController.groovy         |    0
 .../grails-app/domain/functional/tests/Book.groovy |    0
 .../domain/functional/tests/Person.groovy          |    0
 .../grails-app/i18n/messages.properties            |    0
 .../grails-app/i18n/messages_cs_CZ.properties      |    0
 .../grails-app/i18n/messages_da.properties         |    0
 .../grails-app/i18n/messages_de.properties         |    0
 .../grails-app/i18n/messages_es.properties         |    0
 .../grails-app/i18n/messages_fr.properties         |    0
 .../grails-app/i18n/messages_it.properties         |    0
 .../grails-app/i18n/messages_ja.properties         |    0
 .../grails-app/i18n/messages_nb.properties         |    0
 .../grails-app/i18n/messages_nl.properties         |    0
 .../grails-app/i18n/messages_pl.properties         |    0
 .../grails-app/i18n/messages_pt_BR.properties      |    0
 .../grails-app/i18n/messages_pt_PT.properties      |    0
 .../grails-app/i18n/messages_ru.properties         |    0
 .../grails-app/i18n/messages_sv.properties         |    0
 .../grails-app/i18n/messages_th.properties         |    0
 .../grails-app/i18n/messages_zh_CN.properties      |    0
 .../grails-app/init/BootStrap.groovy               |    0
 .../init/functional/tests/Application.groovy       |    0
 .../services/functional/tests/PersonService.groovy |    0
 .../grails-app/views/book/create.gsp               |    0
 .../grails3-neo4j}/grails-app/views/book/edit.gsp  |    0
 .../grails3-neo4j}/grails-app/views/book/index.gsp |    0
 .../grails3-neo4j}/grails-app/views/book/show.gsp  |    0
 .../grails3-neo4j}/grails-app/views/error.gsp      |    0
 .../grails3-neo4j}/grails-app/views/index.gsp      |    0
 .../grails-app/views/layouts/main.gsp              |    0
 .../grails3-neo4j}/grails-app/views/notFound.gsp   |    0
 .../functional/tests/BookControllerSpec.groovy     |   27 +-
 .../test/groovy/functional/tests/BookSpec.groovy   |    0
 .../test/groovy/functional/tests/PersonSpec.groovy |    0
 .../functional/tests/StandaloneNeo4jSpec.groovy    |    0
 .../neo4j-spring-boot/build.gradle}                |   51 +-
 .../examples/neo4j-spring-boot/gradle.properties   |    9 +-
 .../src/main/groovy/example/Application.groovy     |    0
 .../src/main/groovy/example/Book.groovy            |    0
 .../src/main/groovy/example/BookController.groovy  |    0
 .../src/main/groovy/example/BookService.groovy     |    0
 .../src/main/resources/application.yml             |    0
 .../test/groovy/example/BookControllerSpec.groovy  |    0
 .../examples/neo4j-standalone/build.gradle         |    7 +-
 .../examples/neo4j-standalone/gradle.properties    |    9 +-
 .../src/main/groovy/example/Person.groovy          |    0
 .../src/main/groovy/example/PersonService.groovy   |    0
 .../test/groovy/example/PersonServiceSpec.groovy   |    0
 .../examples/test-data-service}/build.gradle       |   37 +-
 .../examples/test-data-service/gradle.properties   |    9 +-
 .../grails-app/conf/application.groovy             |    0
 .../grails-app/conf/application.yml                |   31 +
 .../test-data-service/grails-app/conf/logback.xml  |    0
 .../grails-app/conf/spring/resources.groovy        |    0
 .../example/ApplicationController.groovy           |    0
 .../controllers/example/UrlMappings.groovy         |    0
 .../grails-app/domain/example/Book.groovy          |    0
 .../grails-app/domain/example/Person.groovy        |    0
 .../grails-app/domain/example/Student.groovy       |    0
 .../grails-app/i18n/messages.properties            |    0
 .../grails-app/init/example/Application.groovy     |    3 +-
 .../grails-app/init/example/BootStrap.groovy       |    1 -
 .../grails-app/services/example/BookService.groovy |    0
 .../services/example/LibraryService.groovy         |    0
 .../services/example/PersonService.groovy          |    0
 .../services/example/StudentService.groovy         |    1 -
 .../grails-app/services/example/TestService.groovy |    0
 .../grails-app/views/application/index.gson        |    0
 .../test-data-service/grails-app/views/error.gson  |    0
 .../grails-app/views/errors/_errors.gson           |    0
 .../grails-app/views/notFound.gson                 |    0
 .../grails-app/views/object/_object.gson           |    0
 .../groovy/example/StudentServiceSpec.groovy       |    0
 .../groovy/example/TestServiceSpec.groovy          |    0
 .../LoginAuthenticationSucessHandler.groovy        |    6 +-
 .../src/main/groovy/example/TestBean.groovy        |    0
 grails-data-neo4j/gradle.properties                |   50 +
 .../gradle/neo4j-harness-test-config.gradle        |   80 -
 .../grails-datastore-gorm-neo4j/build.gradle       |  109 +
 .../src/main/groovy/grails/neo4j/Direction.groovy  |    3 +-
 .../main/groovy/grails/neo4j/Neo4jEntity.groovy    |   39 +-
 .../src/main/groovy/grails/neo4j/Node.groovy       |    4 +-
 .../src/main/groovy/grails/neo4j/Path.groovy       |    4 +-
 .../main/groovy/grails/neo4j/Relationship.groovy   |   26 +-
 .../grails/neo4j/mapping/MappingBuilder.groovy     |    9 +-
 .../groovy/grails/neo4j/services/Cypher.groovy     |    3 +-
 .../grails/datastore/gorm/neo4j/CypherBuilder.java |  118 +-
 .../datastore/gorm/neo4j/GraphClassMapping.groovy  |    5 +-
 .../gorm/neo4j/GraphGormMappingFactory.groovy      |   39 +-
 .../gorm/neo4j/GraphPersistentEntity.groovy        |  156 +-
 .../grails/datastore/gorm/neo4j/IdGenerator.java   |   11 +-
 .../datastore/gorm/neo4j/Neo4jDatastore.java       |  277 +-
 .../neo4j/Neo4jDatastoreTransactionManager.java    |   15 +-
 .../gorm/neo4j/Neo4jEntityTraitProvider.groovy     |    7 +-
 .../datastore/gorm/neo4j/Neo4jMappingContext.java  |  132 +-
 .../grails/datastore/gorm/neo4j/Neo4jSession.java  |  213 +-
 .../datastore/gorm/neo4j/Neo4jTransaction.groovy   |   25 +-
 .../gorm/neo4j/RelationshipPersistentEntity.groovy |   65 +-
 .../datastore/gorm/neo4j/RelationshipUtils.groovy  |   52 +-
 .../datastore/gorm/neo4j/SessionFlushedEvent.java  |    3 +-
 .../datastore/gorm/neo4j/TypeDirectionPair.java    |   19 +-
 .../gorm/neo4j/api/Neo4jGormStaticApi.groovy       |  215 +-
 .../gorm/neo4j/collection/GraphAdapter.groovy      |   45 +-
 .../collection/Neo4jAssociationResultList.groovy   |    6 +-
 .../gorm/neo4j/collection/Neo4jList.groovy         |   20 +-
 .../gorm/neo4j/collection/Neo4jPath.groovy         |   56 +-
 .../neo4j/collection/Neo4jPersistentList.groovy    |   15 +-
 .../neo4j/collection/Neo4jPersistentSet.groovy     |   24 +-
 .../collection/Neo4jPersistentSortedSet.groovy     |   19 +-
 .../gorm/neo4j/collection/Neo4jRelationship.groovy |    5 +-
 .../gorm/neo4j/collection/Neo4jResultList.groovy   |   63 +-
 .../gorm/neo4j/collection/Neo4jSet.groovy          |   21 +-
 .../gorm/neo4j/collection/Neo4jSortedSet.groovy    |   20 +-
 .../neo4j/config/Neo4jDriverConfigBuilder.groovy   |   37 +-
 .../datastore/gorm/neo4j/config/Settings.java      |    3 +-
 .../connections/Neo4jConnectionSourceFactory.java  |   66 +-
 .../Neo4jConnectionSourceSettings.groovy           |    3 +-
 .../Neo4jConnectionSourceSettingsBuilder.groovy    |    4 +-
 .../connections/Neo4jEmbeddedConnectionSource.java |    6 +-
 .../neo4j/engine/DynamicAssociationSupport.java    |   57 +-
 .../engine/Neo4jAssociationQueryExecutor.groovy    |  140 +-
 .../gorm/neo4j/engine/Neo4jEntityPersister.java    |  557 +-
 .../Neo4jModificationTrackingEntityAccess.groovy   |    1 -
 .../datastore/gorm/neo4j/engine/Neo4jQuery.groovy  |  871 +++
 .../neo4j/engine/RelationshipPendingDelete.java    |   37 +-
 .../neo4j/engine/RelationshipPendingInsert.java    |  105 +-
 .../gorm/neo4j/extensions/Neo4jExtensions.groovy   |   73 +-
 .../gorm/neo4j/identity/SnowflakeIdGenerator.java  |   21 +-
 .../gorm/neo4j/mapping/config/Attribute.groovy     |    3 +-
 .../neo4j/mapping/config/DynamicAssociation.java   |    1 -
 .../mapping/config/DynamicToManyAssociation.java   |    2 +-
 .../mapping/config/DynamicToOneAssociation.java    |    5 +-
 .../gorm/neo4j/mapping/config/NodeConfig.groovy    |    5 +-
 .../neo4j/mapping/config/RelationshipConfig.groovy |    4 +-
 .../neo4j/mapping/reflect/Neo4jNameUtils.groovy    |    8 +-
 .../datastore/gorm/neo4j/parsers/PlingStemmer.java |  979 +++
 .../proxy/HashcodeEqualsAwareProxyFactory.java     |  118 +
 .../proxy/Neo4jAssociationQueryProxyHandler.java   |    5 +-
 .../gorm/neo4j/proxy/Neo4jProxyFactory.java        |    5 +-
 .../FindAllCypherQueryImplementer.groovy           |   10 +-
 .../FindOneCypherQueryImplementer.groovy           |   11 +-
 .../FindPathCypherQueryImplementer.groovy          |   11 +-
 .../FindShortestPathImplementer.groovy             |   26 +-
 .../StatementResultCypherQueryImplementer.groovy   |   10 +-
 .../UpdateCypherQueryImplementer.groovy            |   28 +-
 .../transform/CypherQueryStringTransformer.groovy  |    9 +-
 .../gorm/neo4j/util/EmbeddedNeo4jServer.java       |   55 +-
 .../datastore/gorm/neo4j/util/IteratorUtil.java    |    7 +-
 .../org.codehaus.groovy.runtime.ExtensionModule    |    0
 ...rg.grails.compiler.gorm.GormEntityTraitProvider |    0
 ...ails.datastore.gorm.services.ServiceImplementer |    0
 .../groovy/grails/gorm/tests/AssignedIdSpec.groovy |    0
 .../grails/gorm/tests/CascadingDeleteSpec.groovy   |   17 +-
 .../CustomLabelWithDynamicAssociationSpec.groovy   |   12 +-
 .../grails/gorm/tests/CypherQueryStringSpec.groovy |   16 +-
 .../grails/gorm/tests/EagerFetchingSpec.groovy     |   24 +-
 .../grails/gorm/tests/EntityParseSpec.groovy       |    0
 .../grails/gorm/tests/FindByIsNullSpec.groovy      |   11 +-
 .../grails/gorm/tests/GormDatastoreSpec.groovy     |  125 +
 .../grails/gorm/tests/GroovyProxySpec.groovy       |   22 +-
 .../gorm/tests/HasManyInheritanceSpec.groovy       |    0
 .../grails/gorm/tests/InheritanceProxySpec.groovy  |   14 +-
 .../grails/gorm/tests/JavaxValidationSpec.groovy   |   11 +-
 .../grails/gorm/tests/JoinCriteriaSpec.groovy      |   11 +-
 .../grails/gorm/tests/LabelStrategySpec.groovy     |   13 +-
 .../groovy/grails/gorm/tests/LikeQuerySpec.groovy  |   20 +-
 .../grails/gorm/tests/ManyToManyQuerySpec.groovy   |    9 +-
 .../groovy/grails/gorm/tests/ManyToManySpec.groovy |   61 +-
 .../grails/gorm/tests/MapPropertySpec.groovy       |    9 +-
 .../grails/gorm/tests/MarkDirtyFalseSpec.groovy    |   27 +-
 .../test/groovy/grails/gorm/tests/MiscSpec.groovy  |   92 +-
 .../gorm/tests/MultipleConnectionsSpec.groovy      |    9 +-
 .../gorm/tests/NativeIdentityGeneratorSpec.groovy  |   15 +-
 .../grails/gorm/tests/Neo4jNameUtilsSpec.groovy    |    0
 .../grails/gorm/tests/Neo4jResultListSpec.groovy   |   11 +-
 .../grails/gorm/tests/NullValueEqualSpec.groovy    |   10 +-
 .../grails/gorm/tests/OneToManyUpdateSpec.groovy   |   31 +-
 .../groovy/grails/gorm/tests/OneToOneSpec.groovy   |   18 +-
 .../grails/gorm/tests/OptimisticLockingSpec.groovy |   77 +-
 .../grails/gorm/tests/OrphanDeleteSpec.groovy      |   12 +-
 .../grails/gorm/tests/PagedResultSpec.groovy       |   11 +-
 .../gorm/tests/PersistenceEventListenerSpec.groovy |   37 +-
 .../src/test/groovy/grails/gorm/tests/Pet.groovy   |    3 -
 .../grails/gorm/tests/ProjectionsSpec.groovy       |   10 +-
 .../test/groovy/grails/gorm/tests/ProxySpec.groovy |   17 +-
 .../grails/gorm/tests/ReadManyObjectsSpec.groovy   |   22 +-
 .../gorm/tests/RelationshipMappingSpec.groovy      |   27 +-
 .../grails/gorm/tests/RelationshipUtilsSpec.groovy |   15 +-
 .../groovy/grails/gorm/tests/SchemalessSpec.groovy |   75 +-
 .../groovy/grails/gorm/tests/TransientsSpec.groovy |   11 +-
 .../grails/gorm/tests/UniqueConstraintSpec.groovy  |   21 +-
 .../gorm/tests/UpdateWithProxyPresentSpec.groovy   |    0
 .../groovy/grails/gorm/tests/ValidationSpec.groovy |   29 +-
 .../grails/gorm/tests/WithTransactionSpec.groovy   |   12 +-
 .../tests/assignedid/OneToManyCreateSpec.groovy    |    0
 .../gorm/tests/assignedid/domain/Owner.groovy      |    0
 .../grails/gorm/tests/assignedid/domain/Pet.groovy |    0
 .../gorm/tests/cypher/OneToManyCreateSpec.groovy   |    1 -
 .../grails/gorm/tests/cypher/domain/Owner.groovy   |    0
 .../grails/gorm/tests/cypher/domain/Pet.groovy     |    0
 .../idgeneration/CustomIdGeneratorSpec.groovy      |    0
 .../idgeneration/SnowflakeIdGeneratorSpec.groovy   |    0
 .../tests/multitenancy/MultiTenancySpec.groovy     |    0
 .../tests/multitenancy/SingleTenancySpec.groovy    |   10 +-
 .../groovy/grails/gorm/tests/path/PathSpec.groovy  |    0
 .../grails/gorm/tests/path/RelationshipSpec.groovy |    0
 .../grails/gorm/tests/path/domain/Person.groovy    |    0
 .../grails/gorm/tests/services/Author.groovy       |    0
 .../grails/gorm/tests/services/AuthorBooks.groovy  |    0
 .../groovy/grails/gorm/tests/services/Book.groovy  |    0
 .../services/CypherQueryTransformerSpec.groovy     |    0
 .../groovy/grails/neo4j/Neo4jEntitySpec.groovy     |    0
 .../datastore/gorm/neo4j/ApiExtensionsSpec.groovy  |   17 +-
 .../grails/datastore/gorm/neo4j/Neo4jSuite.groovy  |   18 +-
 .../gorm/neo4j/RelationshipUtilsSpec.groovy        |    0
 .../gorm/neo4j/TransactionPropagationSpec.groovy   |   14 +-
 .../Neo4jConnectionSourceSettingsSpec.groovy       |   24 -
 .../config/Neo4jDriverConfigBuilderSpec.groovy     |    0
 .../src/test/resources/logback.xml                 |    0
 .../src/test/resources/neo4j-server.properties     |    0
 .../src/test/resources/spy.properties              |    0
 grails-data-neo4j/grails-plugin/build.gradle       |  118 +-
 .../Neo4jDataStoreSpringInitializer.groovy         |   89 +-
 .../main/groovy/grails/test/neo4j/Neo4jSpec.groovy |   17 +-
 .../datastore/gorm/neo4j/Neo4jGrailsPlugin.groovy  |   44 +-
 .../neo4j/converters/InstantToLongConverter.groovy |    1 -
 .../converters/LocalDateTimeToLongConverter.groovy |    1 -
 .../converters/LocalDateToLongConverter.groovy     |    1 -
 .../converters/LocalTimeToLongConverter.groovy     |    1 -
 .../neo4j/converters/LongToInstantConverter.groovy |    1 -
 .../converters/LongToLocalDateConverter.groovy     |    1 -
 .../converters/LongToLocalDateTimeConverter.groovy |    1 -
 .../converters/LongToLocalTimeConverter.groovy     |    3 +-
 .../LongToOffsetDateTimeConverter.groovy           |    1 -
 .../converters/LongToOffsetTimeConverter.groovy    |    1 -
 .../converters/LongToZonedDateTimeConverter.groovy |    1 -
 .../OffsetDateTimeToLongConverter.groovy           |    1 -
 .../converters/OffsetTimeToLongConverter.groovy    |    1 -
 .../converters/PeriodToStringConverter.groovy      |    1 -
 .../converters/StringToPeriodConverter.groovy      |    1 -
 .../converters/ZonedDateTimeToLongConverter.groovy |    1 -
 .../Neo4jDataStoreSpringInitializerSpec.groovy     |   46 +-
 .../settings.gradle                                |   49 +-
 .../mapping/simple/SimpleMapDatastore.java         |   13 +-
 .../mapping/simple/query/SimpleMapQuery.groovy     |   28 +-
 .../mapping/simple/SimpleMapDatastoreSpec.groovy   |    9 +-
 .../SimpleMapSessionPendingOperationsSpec.groovy   |  102 -
 .../grails/databinding/FrameworkPropertyNames.java |   55 -
 .../grails/databinding/SimpleDataBinder.groovy     |   71 +-
 .../grails/databinding/SimpleDataBinderSpec.groovy |   36 -
 grails-databinding/build.gradle                    |    7 +-
 .../web/LocaleAwareNumberConverter.groovy          |    2 +-
 .../databinding/DataBindingConfiguration.java      |  132 +
 .../databinding/DataBindingGrailsPlugin.groovy     |   87 -
 ...ata.json => spring-configuration-metadata.json} |    6 -
 ...rk.boot.autoconfigure.AutoConfiguration.imports |    1 +
 grails-datamapping-async/build.gradle              |    6 +-
 .../grails/datastore/gorm/async/AsyncQuery.groovy  |    4 +-
 .../datastore/gorm/async/GormAsyncStaticApi.groovy |    4 +-
 .../grails/gorm/async/AsyncEntitySpec.groovy       |   93 -
 .../datastore/gorm/async/AsyncQuerySpec.groovy     |   91 -
 .../gorm/async/GormAsyncStaticApiSpec.groovy       |  115 -
 grails-datamapping-core-test/build.gradle          |    2 +-
 .../partitioned/PartitionMultiTenancySpec.groovy   |   22 -
 .../tests/ConnectionScopeMultiTenancySpec.groovy   |  113 -
 .../gorm/tests/MultipleDataSourceSpec.groovy       |  162 +-
 grails-datamapping-core/build.gradle               |    2 +-
 .../grails/gorm/api/GormInstanceOperations.groovy  |   58 +-
 .../grails/gorm/api/GormStaticOperations.groovy    |   71 +-
 .../gorm/multitenancy/CurrentTenantHolder.groovy   |   23 +-
 .../groovy/grails/gorm/multitenancy/Tenants.groovy |   52 +-
 .../transactions/GrailsTransactionAttribute.groovy |   43 +-
 .../transactions/GrailsTransactionTemplate.groovy  |   55 +-
 .../grails/gorm/transactions/Transactional.java    |    5 +-
 .../grails/datamapping/aot/GormRuntimeHints.java   |  112 -
 .../compiler/gorm/DirtyCheckTransformation.groovy  |   16 +-
 .../compiler/gorm/DirtyCheckingTransformer.groovy  |   70 +-
 .../compiler/gorm/GormEntityTraitProvider.groovy   |   17 -
 .../compiler/gorm/GormEntityTransformation.groovy  |  183 +-
 .../gorm/JpaGormEntityTransformation.groovy        |   14 +-
 .../gorm/LocalTransformationSupport.groovy         |   61 -
 .../grails/datastore/gorm/AbstractGormApi.groovy   |   59 +-
 .../datastore/gorm/AbstractGormApiRegistry.groovy  |   47 +-
 .../gorm/ConnectionSourceNameResolver.groovy       |   36 -
 .../datastore/gorm/DelegatingGormEntityApi.groovy  |    5 -
 .../grails/datastore/gorm/GormApiResolver.groovy   |   36 +-
 .../org/grails/datastore/gorm/GormEnhancer.groovy  |  107 +-
 .../org/grails/datastore/gorm/GormEntity.groovy    |  115 +-
 .../org/grails/datastore/gorm/GormEntityApi.groovy |   36 -
 .../grails/datastore/gorm/GormInstanceApi.groovy   |   10 +-
 .../org/grails/datastore/gorm/GormRegistry.groovy  |  271 +-
 .../org/grails/datastore/gorm/GormStaticApi.groovy |  245 +-
 .../grails/datastore/gorm/GormValidationApi.groovy |   15 +-
 .../bootstrap/AbstractDatastoreInitializer.groovy  |   82 +-
 ...igurableApplicationContextEventPublisher.groovy |   58 +-
 .../datastore/gorm/finders/DynamicFinder.java      |  176 +-
 .../datastore/gorm/finders/ListOrderByFinder.java  |   11 +-
 .../gorm/internal/RefreshLockArguments.groovy      |  183 -
 .../datastore/gorm/jdbc/DataSourceBuilder.java     |   21 +-
 .../gorm/jdbc/OriginCapablePropertyValue.java      |   63 +
 .../grails/datastore/gorm/jdbc/PropertyOrigin.java |   32 +-
 .../gorm/jdbc/RelaxedConversionService.java        |   26 +-
 .../datastore/gorm/jdbc/RelaxedDataBinder.java     |   79 +-
 .../grails/datastore/gorm/jdbc/RelaxedNames.java   |    6 +-
 .../connections/DataSourceConnectionSource.java    |    3 -
 .../jdbc/connections/DataSourceSettings.groovy     |   16 +-
 .../SpringDataSourceConnectionSourceFactory.java   |    4 +-
 .../TenantDelegatingGormOperations.groovy          |  249 +-
 .../multitenancy/transform/TenantTransform.groovy  |    2 +-
 .../GlobalGormQuerySafetyASTTransformation.java    |   76 -
 .../transform/GormQuerySafetyTransformer.java      |  690 --
 .../gorm/services/DefaultTransactionService.groovy |   33 +-
 ...stractDetachedCriteriaServiceImplementor.groovy |    6 -
 .../implementers/AbstractSaveImplementer.groovy    |    6 +-
 .../implementers/AbstractServiceImplementer.groovy |    7 +-
 .../AbstractStringQueryImplementer.groovy          |   23 -
 .../implementers/AbstractWhereImplementer.groovy   |    3 -
 .../services/implementers/DeleteImplementer.groovy |    6 +-
 .../implementers/DeleteWhereImplementer.groovy     |    2 +-
 .../implementers/FindAllByImplementer.groovy       |    3 +-
 .../implementers/FindOneImplementer.groovy         |    5 -
 .../FindOneStringQueryImplementer.groovy           |    4 -
 .../implementers/InterfaceProjectionBuilder.groovy |   39 +-
 .../IterableInterfaceProjectionBuilder.groovy      |   16 +-
 .../services/implementers/SaveImplementer.groovy   |    2 +-
 .../implementers/UpdateOneImplementer.groovy       |    3 +-
 .../transform/ServiceTransformation.groovy         |    4 +-
 .../transform/TransactionalTransform.groovy        |   24 +-
 .../gorm/transform/AstPropertyResolveUtils.java    |  146 +-
 .../transform/OrderedGormTransformation.groovy     |    4 +-
 .../datastore/gorm/utils/ReflectionUtils.java      |    6 +-
 .../validation/jakarta/GormValidatorAdapter.groovy |    2 +-
 .../jakarta/GormValidatorFactoryAdapter.groovy     |    2 +-
 .../jakarta/JakartaValidatorRegistry.groovy        |    6 +-
 .../gorm/validation/jakarta/MethodKey.java         |    8 +-
 .../MethodValidationImplementer.groovy             |   11 +-
 .../listener/ValidationEventListener.groovy        |    4 +-
 ...org.codehaus.groovy.transform.ASTTransformation |    1 -
 .../main/resources/META-INF/spring/aot.factories   |    2 -
 .../test/groovy/com/IgnoredPackageEntity.groovy    |   27 -
 .../MultiTenantCurrentTenantTransformSpec.groovy   |  143 -
 .../multitenancy/TenantTransformSpec.groovy        |  176 -
 .../transactions/TransactionalTransformSpec.groovy |   75 -
 .../multitenancy/CurrentTenantHolderSpec.groovy    |   30 -
 .../grails/gorm/multitenancy/TenantsSpec.groovy    |   33 +-
 .../ConnectionRoutingServiceTransformSpec.groovy   |  144 -
 .../services/ServiceImplementerEdgeCaseSpec.groovy |  413 --
 .../transform/ServiceTransformClasses.groovy       |  382 -
 .../services/transform/ServiceTransformSpec.groovy |  532 --
 .../GrailsTransactionAttributeSpec.groovy          |  288 -
 .../TransactionRollbackRulePropagationSpec.groovy  |  159 -
 .../datamapping/aot/GormRuntimeHintsSpec.groovy    |   81 -
 .../gorm/GormEntityIdentityTypeSpec.groovy         |  119 -
 .../compiler/gorm/GormEntityTransformSpec.groovy   |    8 -
 .../compiler/gorm/JpaEntityTransformSpec.groovy    |   52 -
 .../gorm/AbstractGormApiRegistrySpec.groovy        |  239 -
 .../datastore/gorm/AbstractGormApiSpec.groovy      |   20 +-
 .../gorm/ActiveSessionDatastoreSelectorSpec.groovy |   73 -
 .../gorm/ConnectionSourceNameResolverSpec.groovy   |   51 -
 .../gorm/DefaultDatastoreSelectorSpec.groovy       |   95 -
 .../gorm/DefaultGormApiFactorySpec.groovy          |   63 -
 .../datastore/gorm/GormApiFactorySpec.groovy       |  132 -
 .../datastore/gorm/GormApiRegistrySpec.groovy      |  123 -
 .../datastore/gorm/GormEnhancerCoverageSpec.groovy |  231 +-
 .../datastore/gorm/GormInstanceApiSpec.groovy      |  389 --
 .../gorm/GormRegistryConcurrencySpec.groovy        |  139 -
 .../datastore/gorm/GormRegistryCoverageSpec.groovy |   41 +-
 .../gorm/GormRegistryEntityRegistrationSpec.groovy |  185 -
 .../datastore/gorm/GormRegistryFactorySpec.groovy  |   73 -
 .../grails/datastore/gorm/GormStaticApiSpec.groovy |  454 +-
 .../gorm/GormValidationApiCoverageSpec.groovy      |   64 +-
 .../datastore/gorm/GormValidationApiSpec.groovy    |   55 +-
 .../gorm/PreferredDatastoreSelectorSpec.groovy     |   75 -
 .../gorm/QualifiedDatastoreSelectorSpec.groovy     |   96 -
 ...actDatastoreInitializerConfigurationSpec.groovy |  190 -
 .../DirtyCheckCollectionReassignmentSpec.groovy    |  458 --
 .../checking/DirtyCheckTransformationSpec.groovy   |    7 -
 ...ableApplicationContextEventPublisherSpec.groovy |  115 -
 .../gorm/finders/AbstractFinderSpec.groovy         |   27 -
 .../gorm/finders/DynamicFinderCoverageSpec.groovy  |  262 +-
 .../gorm/internal/RefreshLockArgumentsSpec.groovy  |  173 -
 .../datastore/gorm/jdbc/DatabaseDriverSpec.groovy  |   89 -
 .../gorm/jdbc/MultiTenantConnectionSpec.groovy     |   34 -
 .../gorm/jdbc/MultiTenantDataSourceSpec.groovy     |   72 -
 .../gorm/jdbc/RelaxedConversionServiceSpec.groovy  |  116 -
 .../gorm/jdbc/RelaxedDataBinderSpec.groovy         |  123 -
 .../datastore/gorm/jdbc/RelaxedNamesSpec.groovy    |   77 -
 ...hedDataSourceConnectionSourceFactorySpec.groovy |   58 -
 .../DataSourceConnectionSourceFactorySpec.groovy   |  115 -
 .../DataSourceConnectionSourceSpec.groovy          |  108 -
 .../DataSourceSettingsBuilderSpec.groovy           |   75 -
 .../jdbc/connections/DataSourceSettingsSpec.groovy |  123 -
 ...ingDataSourceConnectionSourceFactorySpec.groovy |   89 -
 .../TenantDelegatingGormOperationsSpec.groovy      | 1406 +---
 .../DetachedCriteriaASTTransformationSpec.groovy   |  131 -
 ...obalGormQuerySafetyASTTransformationSpec.groovy |   78 -
 .../GormQuerySafetyTransformerSpec.groovy          |  543 --
 .../WhereQueryAggregateSubqueryErrorSpec.groovy    |  131 -
 .../transform/WhereQueryAssociationPathSpec.groovy |  233 -
 .../transform/WhereQueryClosureCaptureSpec.groovy  |   12 +-
 .../WhereQueryDetachedCriteriaCastSpec.groovy      |  131 -
 .../WhereQueryEmbeddedBlockTransformSpec.groovy    |   11 +-
 .../WhereQueryEmbeddedPropertyPathSpec.groovy      |  196 -
 .../transform/WhereQueryFunctionCallSpec.groovy    |  150 -
 ...reQueryMultiLevelAssociationFunctionSpec.groovy |  138 -
 .../query/transform/WhereQueryNegationSpec.groovy  |  121 -
 .../query/transform/WhereQueryOperatorSpec.groovy  |  283 -
 .../transform/WhereQueryPropertyAliasSpec.groovy   |  177 -
 .../transform/WhereQueryStaticFieldSpec.groovy     |  252 -
 .../gorm/services/DefaultTenantServiceSpec.groovy  |    2 +-
 .../services/DefaultTransactionServiceSpec.groovy  |  178 +-
 .../transform/ServiceTransformationSpec.groovy     |  183 -
 .../support/AdaptedProbeServiceImplementer.groovy  |   64 -
 .../support/NoOpServiceImplementerAdapter.groovy   |   41 -
 .../support/ProbeServiceImplementer.groovy         |   63 -
 .../support/ProbeServiceImplementerAdapter.groovy  |   43 -
 .../AbstractGormASTTransformationSpec.groovy       |  123 -
 ...ctTraitApplyingGormASTTransformationSpec.groovy |  170 -
 .../ApplyNonCompilationUnitAwareTransform.java     |   40 -
 .../gorm/transform/ApplyTestTraitWeaving.java      |   38 -
 .../transform/ApplyUnloadableGormTransform.java    |   39 -
 .../transform/AstPropertyResolveUtilsSpec.groovy   |  289 -
 .../gorm/transform/DoubleGenericTestTrait.groovy   |   37 -
 ...onCompilationUnitAwareTestTransformation.groovy |   39 -
 .../transform/OrderedGormTransformationSpec.groovy |   69 -
 .../gorm/transform/SingleGenericTestTrait.groovy   |   31 -
 .../TestTraitWeavingTransformation.groovy          |   61 -
 .../gorm/transform/TestWeavableTrait.groovy        |   31 -
 .../gorm/utils/ClasspathEntityScannerSpec.groovy   |   71 +-
 .../gorm/utils/ReflectionUtilsSpec.groovy          |   80 -
 ...MappingContextAwareConstraintFactorySpec.groovy |   55 -
 .../ConfigurableParameterNameProviderSpec.groovy   |   79 -
 .../jakarta/ConstraintViolationUtilsSpec.groovy    |   68 -
 .../jakarta/GormValidatorFactoryAdapterSpec.groovy |  149 -
 .../jakarta/JakartaValidatorRegistrySpec.groovy    |   98 -
 .../gorm/validation/jakarta/MethodKeySpec.groovy   |   58 -
 .../listener/ValidationEventListenerSpec.groovy    |  147 -
 .../support/ValidatorRegistriesSpec.groovy         |   67 -
 ...ails.datastore.gorm.services.ServiceImplementer |    1 -
 ...tastore.gorm.services.ServiceImplementerAdapter |    2 -
 grails-datamapping-support/build.gradle            |    3 +-
 .../org/grails/compiler/gorm/GormTransformer.java  |    9 +-
 .../datastore/gorm/GormEntityTraitSpec.groovy      |  197 -
 grails-datamapping-tck/build.gradle                |    1 -
 ...intWorksWithTargetProxiesConstraintsSpec.groovy |    4 +-
 .../data/testing/tck/tests/DomainEventsSpec.groovy |    2 +-
 .../data/testing/tck/tests/FindWhereSpec.groovy    |    3 -
 .../tck/tests/FirstAndLastMethodSpec.groovy        |    2 +-
 .../data/testing/tck/tests/ListOrderBySpec.groovy  |   22 -
 .../data/testing/tck/tests/OneToManySpec.groovy    |    2 -
 .../testing/tck/tests/OptimisticLockingSpec.groovy |   13 +-
 .../data/testing/tck/tests/PagedResultSpec.groovy  |    7 -
 .../tck/tests/PersistenceEventListenerSpec.groovy  |    4 +-
 .../testing/tck/tests/WithTransactionSpec.groovy   |   51 +-
 grails-datamapping-validation/build.gradle         |    1 +
 .../aot/ConstrainedPropertyRuntimeHints.java       |   75 -
 .../main/resources/META-INF/spring/aot.factories   |    2 -
 .../aot/ConstrainedPropertyRuntimeHintsSpec.groovy |   69 -
 grails-datasource/build.gradle                     |    4 +-
 .../datasource/EmbeddedDatabaseShutdownHook.groovy |    2 +-
 grails-datastore-core/build.gradle                 |    2 +-
 .../mapping/config/AbstractGormMappingFactory.java |   40 +-
 .../mapping/config/ConfigurationBuilder.groovy     |  250 +-
 .../datastore/mapping/config/Property.groovy       |   11 +-
 .../datastore/mapping/core/AbstractDatastore.java  |  140 +-
 .../datastore/mapping/core/AbstractSession.java    |   20 +-
 .../grails/datastore/mapping/core/Datastore.java   |   11 +
 .../datastore/mapping/core/DatastoreUtils.java     |   26 +-
 .../org/grails/datastore/mapping/core/Session.java |   14 +-
 .../datastore/mapping/core/SessionResolver.groovy  |   41 +-
 ...er.groovy => ThreadLocalSessionResolver.groovy} |   64 +-
 .../AbstractConnectionSourceFactory.java           |   11 +
 .../connections/ConnectionSourceSettings.groovy    |    7 +-
 .../ConnectionSourceSettingsBuilder.groovy         |    4 +
 .../MultipleConnectionSourceCapableDatastore.java  |   17 +
 .../connections/SingleSessionCapableDatastore.java |   34 -
 .../dirty/checking/DirtyCheckableCollection.java   |   12 -
 .../dirty/checking/DirtyCheckingCollection.groovy  |   66 -
 .../dirty/checking/DirtyCheckingList.groovy        |  112 +-
 .../mapping/dirty/checking/DirtyCheckingMap.groovy |  104 -
 .../mapping/dirty/checking/DirtyCheckingSet.groovy |    6 +-
 .../dirty/checking/DirtyCheckingSortedSet.groovy   |   50 +-
 .../dirty/checking/DirtyCheckingSupport.groovy     |  186 -
 .../mapping/model/AbstractMappingContext.java      |    1 -
 .../mapping/model/AbstractPersistentEntity.java    |   11 +-
 .../org/grails/datastore/mapping/query/Query.java  |    2 +-
 .../datastore/mapping/reflect/AstUtils.groovy      |   28 +-
 .../mapping/reflect/DevToolsClassLoaders.java      |  107 -
 .../datastore/mapping/reflect/NameUtils.java       |   36 -
 .../datastore/mapping/services/Service.groovy      |    1 +
 .../CustomizableRollbackTransactionAttribute.java  |   64 +-
 .../transactions/DatastoreTransactionManager.java  |   13 +-
 .../transactions/SessionOnlyTransaction.java       |   24 +-
 .../mapping/config/ConfigurationBuilderSpec.groovy |  567 --
 .../mapping/core/AbstractDatastoreSpec.groovy      |  298 +-
 .../mapping/core/DatastoreUtilsSpec.groovy         |   45 -
 .../core/SessionResolverIntegrationSpec.groovy     |   55 +-
 .../core/ThreadLocalSessionResolverSpec.groovy     |  128 +
 ...actionSynchronizationSessionResolverSpec.groovy |  254 -
 .../AbstractConnectionSourceFactorySpec.groovy     |   36 +-
 .../ConnectionSourceSettingsBuilderSpec.groovy     |   27 +-
 .../checking/DirtyCheckingCollectionSpec.groovy    |  501 --
 .../config/DocumentMappingContextSpec.groovy       |   89 -
 .../mapping/KeyValueMappingFactoryTests.groovy     |   53 +-
 .../AbstractPersistentEntityGetTenantIdSpec.groovy |  122 +
 .../datastore/mapping/reflect/AstUtilsSpec.groovy  |   34 +-
 .../reflect/DevToolsClassLoadersSpec.groovy        |  186 -
 .../datastore/mapping/reflect/NameUtilsSpec.groovy |   52 -
 .../services/DefaultServiceRegistrySpec.groovy     |    4 +-
 ...omizableRollbackTransactionAttributeSpec.groovy |  200 +-
 .../DatastoreTransactionManagerSpec.groovy         |  137 -
 .../transactions/SessionOnlyTransactionSpec.groovy |   92 -
 .../src/test/resources/logback-test.xml            |   29 -
 grails-dependencies/starter-web/build.gradle       |   12 +-
 grails-doc/build.gradle                            |  148 +-
 grails-doc/src/en/guide/GORM/multiTenancy.adoc     |  129 -
 .../en/guide/GORM/quickStartGuide/basicCRUD.adoc   |   38 -
 .../src/en/guide/REST/callingRestServices.adoc     |   64 -
 .../src/en/guide/REST/linkingToResources.adoc      |   25 -
 .../extendingRestfulController.adoc                |    1 -
 .../restControllersStepByStep.adoc                 |    1 -
 grails-doc/src/en/guide/async/asyncGorm.adoc       |    2 +-
 grails-doc/src/en/guide/async/asyncPromises.adoc   |   54 +-
 grails-doc/src/en/guide/async/asyncRequests.adoc   |   13 +-
 grails-doc/src/en/guide/async/asyncServletApi.adoc |    2 -
 grails-doc/src/en/guide/async/events.adoc          |    4 +-
 grails-doc/src/en/guide/backgroundJobs.adoc        |   81 -
 .../backgroundJobs/backgroundJobsAdvanced.adoc     |   48 -
 .../backgroundJobsAdvanced/quartzClustering.adoc   |   81 -
 .../quartzConfiguration.adoc                       |  249 -
 .../quartzDynamicScheduling.adoc                   |   91 -
 .../backgroundJobsAdvanced/quartzInstallation.adoc |   74 -
 .../quartzJobManagerService.adoc                   |   88 -
 .../quartzJobProperties.adoc                       |   74 -
 .../quartzLongRunningJobs.adoc                     |  157 -
 .../backgroundJobsAdvanced/quartzScheduling.adoc   |  138 -
 .../backgroundJobsAdvanced/quartzTriggers.adoc     |  180 -
 .../backgroundJobsAdvanced/quartzUsefulLinks.adoc  |   27 -
 .../guide/backgroundJobs/backgroundJobsBasic.adoc  |  170 -
 .../guide/commandLine/creatingCustomCommands.adoc  |    9 +-
 .../gradleBuild/gradleDependencies.adoc            |    1 +
 .../applicationClass/applicationLifeCycle.adoc     |    2 -
 .../guide/conf/applicationClass/customizing.adoc   |   34 +-
 grails-doc/src/en/guide/conf/config.adoc           |   33 -
 grails-doc/src/en/guide/conf/config/logging.adoc   |  137 +-
 .../config/logging/loggingFullStackTraces.adoc     |    9 -
 .../guide/conf/dataSource/multipleDatasources.adoc |   13 -
 grails-doc/src/en/guide/conf/micronaut.adoc        |   74 +-
 .../src/en/guide/deployment/deploymentAot.adoc     |  172 -
 .../en/guide/deployment/deploymentAotCache.adoc    |  191 -
 .../src/en/guide/gettingStarted/requirements.adoc  |    5 +-
 grails-doc/src/en/guide/i18n/changingLocales.adoc  |    5 +-
 .../en/guide/i18n/understandingMessageBundles.adoc |   67 -
 grails-doc/src/en/guide/index.adoc                 |   85 -
 grails-doc/src/en/guide/introduction/whatsNew.adoc |  392 +-
 .../introduction/whatsNew/dependencyUpgrades.adoc  |    2 +-
 .../plugins/creatingAndInstallingPlugins.adoc      |   12 +-
 .../plugins/hookingIntoRuntimeConfiguration.adoc   |  214 -
 .../en/guide/plugins/providingBasicArtefacts.adoc  |    9 -
 grails-doc/src/en/guide/reference.adoc             |   25 -
 grails-doc/src/en/guide/scaffolding.adoc           |    2 +-
 grails-doc/src/en/guide/security/codecs.adoc       |    6 -
 .../en/guide/security/securingAgainstAttacks.adoc  |   65 -
 .../security/securityPlugins/springSecurity.adoc   |    4 +-
 .../springSecurity/cas/configuration.adoc          |   26 +-
 .../springSecurity/cas/introduction.adoc           |    2 +-
 .../securityPlugins/springSecurity/cas/usage.adoc  |   20 +-
 .../securityPlugins/springSecurity/core/ip.adoc    |    2 -
 .../springSecurity/ui/customization.adoc           |    2 +-
 .../src/en/guide/spring/springdslAdditional.adoc   |   38 -
 .../grailsCompileStatic.adoc                       |   26 -
 .../src/en/guide/testing/integrationTesting.adoc   |    2 +-
 .../guide/testing/runningTests/withGrailsCli.adoc  |   21 +-
 .../src/en/guide/testing/testingMongodb.adoc       |   74 -
 .../guide/theWebLayer/controllers/dataBinding.adoc |    4 +-
 .../guide/theWebLayer/controllers/formtokens.adoc  |    2 -
 .../theWebLayer/controllers/uploadingFiles.adoc    |   39 +-
 .../src/en/guide/theWebLayer/gson/gsonHal.adoc     |    6 +-
 .../src/en/guide/theWebLayer/gson/gsonTesting.adoc |    7 +-
 .../theWebLayer/gsp/GSPBasics/expressions.adoc     |   12 -
 .../en/guide/theWebLayer/gsp/gspInSpringBoot.adoc  |  164 -
 .../theWebLayer/gsp/gspStaticCompilation.adoc      |  253 -
 .../src/en/guide/theWebLayer/gsp/layouts.adoc      |    2 +-
 .../gsp/makingChangesToADeployedApplication.adoc   |    5 +-
 .../theWebLayer/gsp/taglibs/compiledTags.adoc      |  308 -
 .../gsp/taglibs/usingJSPTagLibraries.adoc          |    2 -
 .../interceptors/interceptorMatching.adoc          |   22 +-
 .../theWebLayer/urlmappings/embeddedVariables.adoc |    2 -
 .../theWebLayer/urlmappings/restfulMappings.adoc   |   78 +-
 grails-doc/src/en/guide/toc.yml                    |   22 -
 grails-doc/src/en/guide/traits/traitsprovided.adoc |    2 +-
 grails-doc/src/en/guide/upgrading.adoc             |   25 -
 .../src/en/guide/upgrading/upgrading60x.adoc       |  118 -
 .../src/en/guide/upgrading/upgrading70x.adoc       |    6 +-
 .../src/en/guide/upgrading/upgrading80x.adoc       | 2667 +------
 grails-doc/src/en/ref/Command Line/test-app.adoc   |   13 +-
 grails-doc/src/en/ref/Constraints/bindable.adoc    |    5 +-
 grails-doc/src/en/ref/Controllers/bindData.adoc    |   50 +-
 grails-doc/src/en/ref/Controllers/withForm.adoc    |    2 -
 grails-doc/src/en/ref/Database Mapping/type.adoc   |    4 +-
 grails-doc/src/en/ref/Dependency Versions.adoc     |    5 +-
 .../src/en/ref/Domain Classes/createCriteria.adoc  |    2 -
 grails-doc/src/en/ref/Domain Classes/list.adoc     |    4 +-
 .../src/en/ref/Domain Classes/listOrderBy.adoc     |    2 +-
 grails-doc/src/en/ref/Domain Classes/lock.adoc     |   98 +-
 grails-doc/src/en/ref/Domain Classes/refresh.adoc  |   72 -
 grails-doc/src/en/ref/Tags - GSP/set.adoc          |    9 -
 grails-doc/src/en/ref/Triggers.adoc                |   41 -
 grails-doc/src/en/ref/Triggers/cron.adoc           |   59 -
 grails-doc/src/en/ref/Triggers/custom.adoc         |   58 -
 grails-doc/src/en/ref/Triggers/simple.adoc         |   57 -
 grails-domain-class/build.gradle                   |    4 +-
 .../DomainClassEnvironmentPostProcessor.groovy     |   70 -
 .../plugins/domain/DomainClassGrailsPlugin.groovy  |   45 +-
 ...y => GrailsDomainClassAutoConfiguration.groovy} |   63 +-
 .../src/main/resources/META-INF/spring.factories   |   20 -
 ...rk.boot.autoconfigure.AutoConfiguration.imports |    2 +-
 .../domain/AutoTimestampCacheDefaultSpec.groovy    |   97 -
 .../domain/DomainClassGrailsPluginSpec.groovy      |   65 +
 grails-encoder/build.gradle                        |    5 +-
 .../grails/encoder/CodecMetaClassSupport.groovy    |   79 +-
 .../encoder/CodecMetaClassSupportSpec.groovy       |  336 -
 .../events/bus/spring/EventBusFactoryBean.groovy   |   15 +-
 .../grails/events/TaskExecuterEventBusSpec.groovy  |   38 +-
 grails-events/plugin/build.gradle                  |    7 +-
 grails-fields/build.gradle                         |    9 +-
 .../plugin/formfields/FormFieldsTagLib.groovy      |    2 +-
 .../formfields/FormFieldsTemplateService.groovy    |   32 +-
 .../model/DomainModelServiceImpl.groovy            |    2 +-
 .../formfields/DefaultFieldTemplateSpec.groovy     |  104 +-
 .../formfields/TemplateLookupCachingSpec.groovy    |   38 -
 grails-forge/README.md                             |  196 +-
 grails-forge/build.gradle                          |   28 +-
 grails-forge/config/checkstyle/checkstyle.xml      |    4 +
 grails-forge/docs/aws-elastic-beanstalk.md         |  229 -
 grails-forge/gradle.properties                     |    7 +-
 grails-forge/gradle/test-config.gradle             |    2 +-
 grails-forge/gradle/wrapper/gradle-wrapper.jar     |  Bin 47505 -> 48462 bytes
 .../gradle/wrapper/gradle-wrapper.properties       |    2 +-
 grails-forge/gradlew                               |    4 +-
 grails-forge/gradlew.bat                           |    4 +-
 .../grails/forge/api/GrailsForgeConfiguration.java |   72 +-
 .../api/create/github/GitHubCreateController.java  |  181 +
 .../forge/api/create/github/GitHubCreateDTO.java   |   57 +
 .../api/create/github/GitHubCreateOperation.java   |   76 +
 .../api/create/github/GitHubCreateService.java     |  220 +
 .../api/create/github/GitHubRedirectService.java   |  149 +
 .../grails-forge-api/native-image.properties       |   14 +
 .../forge/api/ApplicationControllerSpec.groovy     |   23 -
 .../forge/api/GrailsForgeConfigurationSpec.groovy  |   49 -
 .../create/github/GitHubApiMockedController.groovy |  101 +
 .../github/GitHubCreateControllerSpec.groovy       |  116 +
 .../github/GitHubOauthMockedController.groovy      |   45 +
 .../src/test/resources/logback.xml                 |    1 +
 grails-forge/grails-forge-cli/build.gradle         |    7 +-
 .../org/grails/forge/cli/InteractiveShell.java     |   32 +-
 .../groovy/org/grails/forge/cli/CommandSpec.groovy |   50 +-
 grails-forge/grails-forge-core/build.gradle        |    4 +-
 .../dependencies/PomDependencyVersionResolver.java |    6 +-
 .../forge/client/github/oauth/AccessToken.java     |   59 +
 .../client/github/oauth/GitHubOAuthClient.java     |   20 +-
 .../client/github/oauth/GitHubOAuthOperations.java |   25 +-
 .../forge/client/github/v3/GitHubApiClient.java    |   27 +-
 .../client/github/v3/GitHubApiOperations.java      |   94 +
 .../forge/client/github/v3/GitHubRepository.java   |   89 +
 .../forge/client/github/v3/GitHubSecret.java       |   58 +
 .../client/github/v3/GitHubSecretsPublicKey.java   |   41 +-
 .../grails/forge/client/github/v3/GitHubUser.java  |   68 +
 .../forge/client/github/v3/GitHubWorkflowRun.java  |   67 +
 .../forge/client/github/v3/GitHubWorkflowRuns.java |   46 +-
 .../templates/gradleWrapperProperties.rocker.raw   |    2 +-
 .../grails/forge/feature/database/AsyncGorm.java   |   94 -
 .../forge/feature/database/GrailsDataMongoDB.java  |   29 +-
 .../feature/database/MongoDBTestingSupport.java    |   76 -
 .../database/MongoDBTestingSupportValidator.java   |   47 -
 .../forge/feature/database/MongoFeature.java       |   25 -
 .../grails/forge/feature/database/MongoSync.java   |    6 +-
 .../grails/forge/feature/database/Neo4jGorm.java   |   78 -
 .../grails/templates/urlMappings.rocker.raw        |    4 -
 .../feature/lang/groovy/application.rocker.raw     |   30 +-
 .../forge/feature/lang/groovy/bootStrap.rocker.raw |    8 +-
 .../org/grails/forge/feature/logging/Logback.java  |   11 +-
 .../forge/feature/logging/LogbackConfig.java       |   84 -
 .../forge/feature/security/SecurityFeature.java    |    3 +-
 .../security/SpringBootStarterSecurity.java        |   12 +-
 .../security/template/securityConfig.rocker.raw    |   51 +
 .../feature/security/template/user.rocker.raw      |   15 +-
 .../security/template/userClassic.rocker.raw       |   11 +-
 .../feature/security/template/userSpec.rocker.raw  |   35 +-
 .../org/grails/forge/feature/view/Scaffolding.java |    5 +
 .../java/org/grails/forge/options/GormImpl.java    |    3 +-
 .../java/org/grails/forge/util/GitHubUtil.java     |   94 +
 .../src/main/resources/gradle/gradlew              |    4 +-
 .../src/main/resources/gradle/gradlew.bat          |    4 +-
 .../resources/gradle/wrapper/gradle-wrapper.jar    |  Bin 47505 -> 48462 bytes
 .../src/main/resources/gsp/error.gsp               |    4 +-
 .../src/main/resources/gsp/index.gsp               |   59 +-
 .../src/main/resources/gsp/main.gsp                |   35 +-
 .../forge/ActiveProcessorCountForkSpec.groovy      |   39 -
 .../PomDependencyVersionResolverSpec.groovy        |   39 +-
 .../forge/feature/database/AsyncGormSpec.groovy    |   94 -
 .../feature/database/GrailsDataMongoDBSpec.groovy  |   33 -
 .../database/MongoDBTestingSupportSpec.groovy      |   76 -
 .../forge/feature/database/MongoSyncSpec.groovy    |   18 -
 .../forge/feature/database/Neo4JGormSpec.groovy    |   67 -
 .../feature/grails/GrailsUrlMappingsSpec.groovy    |   63 -
 .../forge/feature/logging/LogbackSpec.groovy       |   32 +-
 .../security/GrailsSpringSecuritySpec.groovy       |   37 -
 .../security/SpringBootStarterSecuritySpec.groovy  |   95 +-
 .../grails/forge/feature/view/GrailsGspSpec.groovy |   29 +-
 .../forge/feature/view/ScaffoldingSpec.groovy      |    4 +-
 .../org/grails/forge/options/GormImplSpec.groovy   |    2 +-
 .../aws/.platform/nginx/conf.d/proxy.conf          |   19 -
 grails-forge/grails-forge-web-netty/aws/Procfile   |    1 -
 grails-forge/grails-forge-web-netty/aws/start.sh   |   31 -
 grails-forge/grails-forge-web-netty/build.gradle   |   31 -
 .../grails-forge-web-netty/reflect-config.json     |   30 +
 .../grails-forge-web-netty/resource-config.json    |    5 +-
 .../src/main/resources/application.yml             |   13 +-
 grails-forge/infrastructure/README.md              |   84 -
 grails-forge/infrastructure/environment.yaml       |  293 -
 grails-forge/infrastructure/shared.yaml            |  400 --
 grails-forge/settings.gradle                       |   10 +-
 grails-geb/build.gradle                            |    1 -
 .../grails/plugin/geb/GebGrailsPlugin.groovy       |    2 +-
 .../plugin/geb/GebRecordingTestListenerSpec.groovy |   80 -
 .../plugin/geb/WebDriverContainerHolderSpec.groovy |  200 -
 .../plugin/geb/GebRecordingTestListener.groovy     |   14 -
 .../plugin/geb/WebDriverContainerHolder.groovy     |   52 +-
 grails-gradle/build.gradle                         |   30 +-
 .../grails/gradle/common/XmlParserFeature.java     |   94 -
 .../gradle/common/XmlParserFeatureSpec.groovy      |   54 -
 grails-gradle/gradle/docs-config.gradle            |    1 +
 grails-gradle/gradle/test-config.gradle            |    2 +-
 grails-gradle/gradle/wrapper/gradle-wrapper.jar    |  Bin 47505 -> 48462 bytes
 .../gradle/wrapper/gradle-wrapper.properties       |    2 +-
 grails-gradle/gradlew                              |    4 +-
 grails-gradle/gradlew.bat                          |    4 +-
 grails-gradle/model/build.gradle                   |    3 +-
 .../model/src/main/groovy/grails/io/IOUtils.groovy |    6 +-
 .../main/groovy/grails/util/BuildSettings.groovy   |   43 -
 .../src/main/groovy/grails/util/Environment.groovy |    8 +-
 .../org/grails/io/support/SpringIOUtils.java       |  162 +-
 .../org/grails/io/support/SpringIOUtilsSpec.groovy |  194 -
 grails-gradle/plugins/build.gradle                 |    7 -
 .../gradle/plugin/aot/AotCacheExtension.groovy     |   67 -
 .../plugin/aot/ExtractApplicationTask.groovy       |   96 -
 .../plugin/aot/GenerateNativeMetadataTask.groovy   |  188 -
 .../plugin/aot/NativeMetadataExtension.groovy      |   62 -
 .../apache/grails/gradle/plugin/aot/RunPort.groovy |   64 -
 .../grails/gradle/plugin/aot/StartupLog.groovy     |  113 -
 .../plugin/aot/TraceNativeMetadataTask.groovy      |  495 --
 .../gradle/plugin/aot/TrainAotCacheTask.groovy     |  385 -
 .../plugin/bom/BomPropertyOverridesPlugin.groovy   |    8 -
 .../commands/GrailsCliArtifactGradlePlugin.groovy  |   97 +-
 .../plugin/commands/GrailsCliGradlePlugin.groovy   |  100 +-
 .../AutoConfigurationImportsCompileInput.groovy    |   44 -
 .../GrailsCompileStaticArtefactsProvider.groovy    |   11 +-
 .../plugin/core/GrailsCompileStaticOptions.groovy  |  112 +-
 .../core/GrailsCompilerConfigScriptTask.groovy     |   87 -
 .../gradle/plugin/core/GrailsExtension.groovy      |   72 +-
 .../plugin/core/GrailsGormIdTypeProvider.groovy    |   76 -
 .../gradle/plugin/core/GrailsGormOptions.groovy    |   71 -
 .../gradle/plugin/core/GrailsGradlePlugin.groovy   |  709 +-
 .../core/GrailsGspCompileStaticProvider.groovy     |   79 -
 .../gradle/plugin/core/GrailsI18nOptions.groovy    |   64 -
 .../plugin/core/GrailsPluginGradlePlugin.groovy    |  150 +-
 .../plugin/core/TestPhasesGradlePlugin.groovy      |    2 +-
 .../plugin/i18n/GenerateI18nDescriptorTask.groovy  |  177 -
 .../gradle/plugin/i18n/I18nBundleIndex.groovy      |  222 -
 .../scaffolding/GenerateScaffoldedViewsTask.groovy |  301 -
 .../views/gsp/GenerateTagLibraryIndexTask.groovy   |  206 -
 .../views/gsp/GroovyPageForkCompileTask.groovy     |   62 +-
 .../plugin/views/gsp/GroovyPagePlugin.groovy       |  404 +-
 .../plugin/views/gsp/TagLibraryIndexFiles.groovy   |  133 -
 .../plugin/aot/ExtractApplicationTaskSpec.groovy   |   54 -
 .../aot/GenerateNativeMetadataTaskSpec.groovy      |  182 -
 .../grails/gradle/plugin/aot/RunPortSpec.groovy    |   74 -
 .../grails/gradle/plugin/aot/StartupLogSpec.groovy |  129 -
 .../plugin/aot/TraceNativeMetadataTaskSpec.groovy  |  345 -
 .../gradle/plugin/aot/TracedRunFixture.groovy      |  138 -
 .../gradle/plugin/aot/TrainAotCacheTaskSpec.groovy |  383 -
 .../gradle/plugin/aot/TrainingRunFixture.groovy    |   66 -
 .../bom/BomPropertyOverridesPluginSpec.groovy      |   20 -
 .../plugin/commands/CliAutoDiscoverySpec.groovy    |  129 +-
 .../commands/LegacyCommandTaskDiscoverySpec.groovy |   44 -
 .../PluginScriptCommandPackagingSpec.groovy        |  129 -
 .../core/ActiveProcessorCountForkSpec.groovy       |   38 -
 .../plugin/core/AssetClasspathPackagingSpec.groovy |   47 -
 .../core/AutoConfigurationImportsInputSpec.groovy  |   53 -
 .../plugin/core/BomPlatformFunctionalSpec.groovy   |   32 +
 .../core/GormDefaultIdTypeFunctionalSpec.groovy    |   97 -
 ...GrailsCompileStaticArtefactsProviderSpec.groovy |   39 -
 .../core/GrailsCompileStaticOptionsSpec.groovy     |   14 +-
 .../gradle/plugin/core/GrailsExtensionSpec.groovy  |   43 +-
 .../core/GrailsGormIdTypeProviderSpec.groovy       |  121 -
 .../core/GrailsGroovyCompilerConfigSpec.groovy     |  369 -
 .../core/GrailsGspCompileStaticProviderSpec.groovy |  153 -
 .../core/GrailsNativeImageDefaultsSpec.groovy      |  101 -
 .../core/GrailsWebDaemonReuseFunctionalSpec.groovy |   56 -
 .../plugin/core/TestPhasesGradlePluginSpec.groovy  |  108 -
 .../i18n/GenerateI18nDescriptorTaskSpec.groovy     |  124 -
 .../gradle/plugin/i18n/I18nBundleIndexSpec.groovy  |  148 -
 .../i18n/I18nDescriptorFunctionalSpec.groovy       |  119 -
 .../GenerateScaffoldedViewsTaskSpec.groovy         |  335 -
 .../gsp/GenerateTagLibraryIndexTaskSpec.groovy     |  231 -
 .../gsp/GroovyPagePluginFunctionalSpec.groovy      |  131 -
 .../views/gsp/GroovyPageToolchainSpec.groovy       |  108 -
 .../views/gsp/TagLibraryIndexFilesSpec.groovy      |  113 -
 .../gsp/TagLibraryIndexWiringFunctionalSpec.groovy |  131 -
 .../asset-classpath-packaging/build.gradle         |   42 -
 .../asset-classpath-packaging/gradle.properties    |    2 -
 .../asset-classpath-packaging/settings.gradle      |    1 -
 .../build.gradle                                   |   38 +
 .../gradle.properties                              |    0
 .../settings.gradle                                |    1 +
 .../build.gradle                                   |   49 +
 .../gradle.properties                              |    0
 .../settings.gradle                                |    1 +
 .../cli-companion-autodiscovery/app/build.gradle   |   37 +-
 .../included-digit-bearing-plugin/build.gradle     |   21 -
 .../my-plugin-2fa-one/build.gradle                 |    1 -
 .../my-plugin-2fa-snapshot/build.gradle            |    1 -
 .../my-plugin-2fa-timestamp/build.gradle           |    1 -
 .../my-plugin-2fa-unspecified/build.gradle         |    1 -
 .../included-digit-bearing-plugin/settings.gradle  |    3 -
 .../cli-companion-autodiscovery/settings.gradle    |    9 -
 .../app/build.gradle                               |   20 -
 .../build.gradle                                   |    0
 .../producer/build.gradle                          |    3 -
 .../runtime-only-producer/build.gradle             |    3 -
 .../settings.gradle                                |    4 -
 .../build.gradle                                   |  123 -
 .../settings.gradle                                |   25 -
 .../src/main/groovy/example/ConfiguredType.groovy  |   29 -
 .../build.gradle                                   |   60 -
 .../gradle.properties                              |    1 -
 .../settings.gradle                                |    1 -
 .../compiler-config-incremental/build.gradle       |   11 -
 .../compiler-config-incremental/gradle.properties  |    1 -
 .../compiler-config-incremental/settings.gradle    |    1 -
 .../compiler-config-late-assignment/build.gradle   |   20 -
 .../gradle.properties                              |    1 -
 .../settings.gradle                                |    1 -
 .../user-config.groovy                             |    1 -
 .../compiler-config-late-source-set/build.gradle   |   15 -
 .../gradle.properties                              |    1 -
 .../settings.gradle                                |    1 -
 .../build.gradle                                   |    7 -
 .../gradle.properties                              |    1 -
 .../settings.gradle                                |    1 -
 .../compiler-config-plugin-inputs/build.gradle     |   14 -
 .../gradle.properties                              |    1 -
 .../compiler-config-plugin-inputs/settings.gradle  |    1 -
 .../build.gradle                                   |   40 -
 .../gradle.properties                              |    1 -
 .../settings.gradle                                |    1 -
 .../compiler-config-standalone-task/build.gradle   |   27 -
 .../gradle.properties                              |    1 -
 .../settings.gradle                                |    1 -
 .../user-config.groovy                             |    1 -
 .../compiler-config-star-imports/build.gradle      |   17 -
 .../compiler-config-star-imports/gradle.properties |    1 -
 .../compiler-config-star-imports/settings.gradle   |    1 -
 .../app/build.gradle                               |   21 -
 .../app/grails-app/conf/application.yml            |    4 -
 .../build.gradle                                   |   31 -
 .../gradle.properties                              |    1 -
 .../plugin/build.gradle                            |   16 -
 .../plugin/src/main/java/example/PortableBook.java |   14 -
 .../settings.gradle                                |   11 -
 .../gorm-default-id-type/build.gradle              |   33 -
 .../gorm-default-id-type/gradle.properties         |    1 -
 .../grails-app/conf/application.yml                |    2 -
 .../gorm-default-id-type/settings.gradle           |    1 -
 .../gsp-compile-classpath-grails/build.gradle      |   30 -
 .../gsp-compile-classpath-grails/gradle.properties |    2 -
 .../gsp-compile-classpath-grails/settings.gradle   |    1 -
 .../gsp-compile-classpath/build.gradle             |   66 -
 .../compile-classpath-marker/marker.txt            |    1 -
 .../provided-compile-marker/marker.txt             |    1 -
 .../gsp-compile-classpath/settings.gradle          |    1 -
 .../test-projects/gsp-compile-static/build.gradle  |   32 -
 .../gsp-compile-static/gradle.properties           |    1 -
 .../grails-app/conf/application.yml                |    0
 .../gsp-compile-static/settings.gradle             |    1 -
 .../test-projects/i18n-descriptor-app/build.gradle |    3 -
 .../i18n-descriptor-app/gradle.properties          |    2 -
 .../grails-app/i18n/api_errors.properties          |    1 -
 .../grails-app/i18n/messages.properties            |    1 -
 .../grails-app/i18n/messages_de.properties         |    1 -
 .../grails-app/i18n/messages_pt_BR.properties      |    1 -
 .../i18n-descriptor-app/settings.gradle            |    1 -
 .../i18n-descriptor-declared/build.gradle          |    9 -
 .../i18n-descriptor-declared/gradle.properties     |    2 -
 .../grails-app/i18n/api.properties                 |    1 -
 .../grails-app/i18n/api_errors.properties          |    1 -
 .../i18n-descriptor-declared/settings.gradle       |    1 -
 .../i18n-descriptor-plugin-collision/build.gradle  |    3 -
 .../gradle.properties                              |    2 -
 .../grails-app/i18n/messages.properties            |    1 -
 .../settings.gradle                                |    1 -
 .../demo/SpringSecurityDemoGrailsPlugin.groovy     |    5 -
 .../i18n-descriptor-plugin/build.gradle            |    3 -
 .../i18n-descriptor-plugin/gradle.properties       |    2 -
 .../spring-security-demo-validation.properties     |    1 -
 .../i18n/spring-security-demo.properties           |    1 -
 .../i18n/spring-security-demo_fr.properties        |    1 -
 .../i18n-descriptor-plugin/settings.gradle         |    1 -
 .../demo/SpringSecurityDemoGrailsPlugin.groovy     |    5 -
 .../legacy-command-discovery/app/build.gradle      |   15 -
 .../legacy-command-discovery/gradle.properties     |    2 -
 .../legacy-command-api/build.gradle                |    3 -
 .../java/grails/dev/commands/ExecutionContext.java |   22 -
 .../legacy-command-plugin/build.gradle             |   14 -
 .../example/legacy/HelloLegacyAppCommand.groovy    |   40 -
 .../src/main/resources/META-INF/grails.factories   |    1 -
 .../legacy-command-discovery/settings.gradle       |    3 -
 .../test-projects/native-defaults-aot/build.gradle |   10 -
 .../native-defaults-aot/gradle.properties          |    1 -
 .../grails-app/conf/application.yml                |    0
 .../native-defaults-aot/settings.gradle            |    1 -
 .../test-projects/native-defaults-off/build.gradle |   12 -
 .../native-defaults-off/gradle.properties          |    1 -
 .../grails-app/conf/application.yml                |    0
 .../native-defaults-off/settings.gradle            |    1 -
 .../test-projects/native-defaults-on/build.gradle  |   10 -
 .../native-defaults-on/gradle.properties           |    1 -
 .../grails-app/conf/application.yml                |    0
 .../native-defaults-on/settings.gradle             |    1 -
 .../native-metadata-ordering/build.gradle          |   24 -
 .../native-metadata-ordering/gradle.properties     |    1 -
 .../grails-app/conf/application.yml                |    0
 .../grails-app/views/index.gsp                     |    3 -
 .../native-metadata-ordering/settings.gradle       |    1 -
 .../plugin-script-commands/gradle.properties       |    2 -
 .../plugin-with-cli/build.gradle                   |   89 -
 .../grails-app/views/sample/show.gsp               |    1 -
 .../resources/META-INF/commands/hand-authored.yml  |    1 -
 .../src/main/scripts/example-multi-step.yml        |    3 -
 .../src/main/scripts/example-script.groovy         |    5 -
 .../plugin-with-cli/src/main/templates/example.gsp |    1 -
 .../plugin-with-cli/src/main/templates/example.txt |    1 -
 .../plugin-without-cli/build.gradle                |   38 -
 .../src/main/scripts/legacy-only-script.groovy     |    5 -
 .../src/main/templates/legacy-only.gsp             |    1 -
 .../src/main/templates/legacy-only.txt             |    1 -
 .../plugin-script-commands/settings.gradle         |    3 -
 .../test-projects/taglib-index-wiring/build.gradle |   32 -
 .../taglib-index-wiring/settings.gradle            |    1 -
 .../test-projects/web-daemon-reuse/build.gradle    |    3 -
 .../web-daemon-reuse/gradle.properties             |    1 -
 .../grails-app/conf/application.yml                |    0
 .../test-projects/web-daemon-reuse/settings.gradle |    1 -
 grails-gradle/settings.gradle                      |    8 -
 grails-gsp/core/build.gradle                       |   13 +-
 .../gsp/aot/PrecompiledPageRuntimeHints.java       |   52 -
 .../org/grails/gsp/CompileStaticGroovyPage.groovy  |    5 -
 .../src/main/groovy/org/grails/gsp/GroovyPage.java |   93 +-
 .../groovy/org/grails/gsp/GroovyPageMetaInfo.java  |  117 +-
 .../org/grails/gsp/GroovyPagesMetaUtils.groovy     |   25 +-
 .../org/grails/gsp/GroovyPagesTemplateEngine.java  |   12 +-
 .../org/grails/gsp/ModelRecordingGroovyPage.groovy |    3 +-
 .../grails/gsp/compiler/GroovyPageCompiler.groovy  |   69 +-
 .../org/grails/gsp/compiler/GroovyPageParser.java  |  295 +-
 .../org/grails/gsp/compiler/GroovyPageScanner.java |   13 +-
 .../gsp/compiler/GroovyPageTypeCheckingConfig.java |   22 -
 .../GroovyPageTypeCheckingExtension.groovy         |  255 +-
 .../gsp/compiler/PageScopeVariableScanner.java     |  177 -
 .../org/grails/gsp/compiler/tags/GroovyDefTag.java |   25 +-
 .../grails/gsp/io/DefaultGroovyPageLocator.java    |   25 +-
 .../main/resources/META-INF/spring/aot.factories   |    2 -
 .../gsp/aot/PrecompiledPageRuntimeHintsSpec.groovy |   64 -
 .../grails/gsp/GroovyPageMetaInfoReloadSpec.groovy |  162 -
 .../grails/gsp/GroovyPageMethodMissingSpec.groovy  |  120 -
 .../GroovyPagesTemplateEngineChecksumSpec.groovy   |   52 -
 .../gsp/GroovyPagesTemplateEngineTests.groovy      |   58 -
 .../grails/gsp/GspCompileStaticConfigSpec.groovy   |  721 --
 .../org/grails/gsp/GspCompileStaticSpec.groovy     |  133 -
 .../GroovyPageCompilerReproducibilitySpec.groovy   |  107 -
 .../gsp/compiler/GroovyPageCompilerSpec.groovy     |  116 -
 .../compiler/PageScopeVariableScannerSpec.groovy   |  119 -
 .../DefaultGroovyPageLocatorPrecompiledSpec.groovy |  120 -
 grails-gsp/grails-layout/build.gradle              |    7 +-
 ...ilsSiteMeshViewResolverBeanPostProcessor.groovy |   18 +-
 .../sitemesh3/Sitemesh3AutoConfiguration.groovy    |  131 +
 .../Sitemesh3EnvironmentPostProcessor.groovy       |   38 +-
 .../plugins/sitemesh3/Sitemesh3GrailsPlugin.groovy |  127 +-
 .../plugins/sitemesh3/Sitemesh3LayoutTagLib.groovy |    8 -
 .../sitemesh3/GrailsSiteMeshViewResolver.java      |   12 +-
 .../src/main/resources/META-INF/spring.factories   |    2 +-
 ...iteMeshViewResolverBeanPostProcessorSpec.groovy |   22 -
 ...lsSiteMeshViewResolverServletContextSpec.groovy |  105 -
 .../Sitemesh3AutoConfigurationSpec.groovy          |   53 -
 .../sitemesh3/Sitemesh3LayoutTagLibSpec.groovy     |   20 -
 grails-gsp/grails-taglib/build.gradle              |    8 +-
 .../grails/core/gsp/DefaultGrailsTagLibClass.java  |   24 +-
 .../org/grails/taglib/CompiledTagInvocation.java   |  215 -
 .../org/grails/taglib/GroovyPageAttributes.java    |   13 +-
 .../grails/taglib/NamespacedTagDispatcher.groovy   |   23 +-
 .../taglib/TagLibNamespaceMethodDispatcher.groovy  |    2 +-
 .../org/grails/taglib/TagLibraryMetaUtils.groovy   |   56 +-
 .../groovy/org/grails/taglib/TagMethodInvoker.java |  217 +-
 .../main/groovy/org/grails/taglib/TagOutput.java   |    2 +-
 .../taglib/TemplateNamespacedTagDispatcher.groovy  |   16 +-
 .../grails/taglib/discovery/AstTagLibraryView.java |   85 -
 .../grails/taglib/discovery/AstTagMethodView.java  |  127 -
 .../taglib/discovery/ReflectedTagLibraryView.java  |   73 -
 .../taglib/discovery/ReflectedTagMethodView.java   |  110 -
 .../grails/taglib/discovery/TagDiscoveryRules.java |  187 -
 .../taglib/discovery/TagLibraryAstDiscovery.java   |   88 -
 .../grails/taglib/discovery/TagLibraryView.java    |   53 -
 .../org/grails/taglib/discovery/TagMethodView.java |  103 -
 .../org/grails/taglib/index/TagLibraryIndex.java   |  526 --
 .../grails/taglib/index/TagLibraryIndexEntry.java  |   32 -
 .../taglib/index/TagLibraryIndexGenerator.java     |  431 --
 .../grails/taglib/index/TagLibraryIndexWriter.java |  212 -
 .../grails/taglib/GroovyPageAttributesTests.groovy |   70 +-
 .../grails/taglib/index/TagLibraryIndexSpec.groovy |  340 -
 .../TagLibraryIndexWriterConcurrencySpec.groovy    |  127 -
 grails-gsp/grails-web-gsp-taglib/build.gradle      |    2 -
 .../web/pages/StandaloneTagLibraryLookup.java      |   41 +-
 grails-gsp/grails-web-gsp/build.gradle             |   13 +-
 .../gsp/io/GrailsConventionGroovyPageLocator.java  |    2 +-
 .../org/grails/web/pages/GSPResponseWriter.java    |    2 +-
 .../grails/web/servlet/view/GroovyPageView.java    |    5 +-
 .../web/servlet/view/GroovyPageViewResolver.java   |    4 +-
 .../GrailsConventionGroovyPageLocatorSpec.groovy   |    1 +
 grails-gsp/grails-web-jsp/build.gradle             |    2 -
 .../org/grails/gsp/jsp/GroovyPagesPageContext.java |    2 +-
 .../org/grails/gsp/jsp/PageContextFactory.groovy   |    2 +-
 .../groovy/org/grails/gsp/jsp/TldReader.groovy     |    3 +-
 .../grails/gsp/jsp/WebXmlTagLibraryReader.groovy   |    3 +-
 grails-gsp/grails-web-taglib/build.gradle          |    3 +-
 .../main/groovy/grails/artefact/TagLibrary.groovy  |   31 +-
 .../grails/artefact/gsp/TagLibraryInvoker.groovy   |   20 +-
 .../taglib/compiler/CompiledTagCallRewriter.java   |  616 --
 .../gsp/taglib/compiler/LocalNameCollector.java    |  131 -
 .../gsp/taglib/compiler/PageBindingCollector.java  |   93 -
 .../TagLibArtefactTypeAstTransformation.java       |   88 +-
 .../taglib/WebRequestTemplateVariableBinding.java  |   13 +-
 .../taglib/discovery/TagDiscoveryRulesSpec.groovy  |  122 -
 .../taglib/discovery/TagSetAgreementSpec.groovy    |   98 -
 .../taglib/index/SingleIndexProducerSpec.groovy    |  126 -
 .../index/SourceResolvedIndexGeneratorSpec.groovy  |  452 --
 .../index/TagLibraryIndexGeneratorSpec.groovy      |  301 -
 .../web/taglib/NoMetaClassMutationSpec.groovy      |  104 -
 .../web/taglib/TagLibraryLookupIndexSpec.groovy    |  118 -
 .../org/grails/web/taglib/TagPrecedenceSpec.groovy |  112 -
 grails-gsp/plugin/build.gradle                     |   15 +-
 .../traits/CompiledTagCallTransformation.groovy    |  109 -
 ...org.codehaus.groovy.transform.ASTTransformation |    1 -
 .../TagLibBeanDefinitionsPostProcessor.groovy      |   95 -
 .../grails/gsp/taglib/aot/TagLibRuntimeHints.java  |  136 -
 .../plugins/web/GroovyPagesGrailsPlugin.groovy     |   88 +-
 .../grails/plugins/web/taglib/FormTagLib.groovy    |  186 +-
 .../plugins/web/taglib/ValidationTagLib.groovy     |    4 +-
 .../additional-spring-configuration-metadata.json  |  116 -
 .../META-INF/spring-configuration-metadata.json    |   99 +
 .../main/resources/META-INF/spring/aot.factories   |    2 -
 .../TagLibBeanDefinitionsPostProcessorSpec.groovy  |  117 -
 .../gsp/taglib/aot/TagLibRuntimeHintsSpec.groovy   |   84 -
 .../groovy/org/grails/gsp/compiler/ScanTests.java  |   33 -
 .../org/grails/gsp/jsp/JstlDocTypeTldSpec.groovy   |   72 -
 .../org/grails/gsp/jsp/TldReaderTests.groovy       |   56 -
 .../gsp/jsp/WebXmlTagLibraryReaderTests.groovy     |   20 -
 .../GroovyPagesGrailsPluginPrecompiledSpec.groovy  |   77 -
 .../groovy/org/grails/web/pages/ParseSpec.groovy   |    2 +-
 .../web/taglib/AbstractGrailsTagTests.groovy       |   24 +-
 .../web/taglib/CompiledPageTagCallSpec.groovy      |  138 -
 .../web/taglib/CompiledTagCallBytecodeSpec.groovy  |  284 -
 .../web/taglib/CompiledTagCallRewriterSpec.groovy  |   53 -
 .../CompiledTagCallTransformationOrderSpec.groovy  |   68 -
 .../web/taglib/CompiledTagInvocationSpec.groovy    |  146 -
 .../web/taglib/ControllerTagCallRewriteSpec.groovy |  156 -
 .../web/taglib/FormTagLibResourceTests.groovy      |   21 -
 .../org/grails/web/taglib/FormTagLibTests.groovy   |   15 -
 .../taglib/GroovyMethodNameCollisionSpec.groovy    |  212 -
 .../web/taglib/GspStaticTagResolutionSpec.groovy   |  181 -
 .../grails/web/taglib/IndexEdgeCaseTagLib.groovy   |   65 -
 .../web/taglib/LocaleSelectRenderingSpec.groovy    |  151 +-
 .../grails/web/taglib/RewrittenCallsTagLib.groovy  |   52 -
 .../web/taglib/RewrittenPageRenderingSpec.groovy   |   92 -
 .../web/taglib/SameProjectTagResolutionSpec.groovy |  129 -
 .../grails/web/taglib/TagCallShadowingSpec.groovy  |  236 -
 .../web/taglib/TagLibraryIndexAgreementSpec.groovy |  119 -
 .../taglib/TagLibraryInvokerDispatchSpec.groovy    |  176 -
 .../org/grails/web/taglib/TypedSetTagSpec.groovy   |   46 -
 grails-gsp/spring-boot/README.md                   |   47 +-
 grails-gsp/spring-boot/build.gradle                |    6 -
 .../java/grails/gsp/boot/GspAutoConfiguration.java |  189 +-
 ...oneGrailsApplicationAwareBeanPostProcessor.java |   63 -
 .../gsp/boot/StandaloneGroovyPageViewResolver.java |   76 -
 .../gsp/boot/GspAutoConfigurationSpec.groovy       |  133 -
 ...ilsApplicationAwareBeanPostProcessorSpec.groovy |  109 -
 .../StandaloneGroovyPageViewResolverSpec.groovy    |   92 -
 .../gsp/boot/StandaloneTagLibraryLookupSpec.groovy |  117 -
 .../gsp/boot/TagLibraryLookupRegistrarSpec.groovy  |  110 -
 .../boot/UrlMappingsHolderConfigurationSpec.groovy |   91 -
 .../src/test/resources/gsp/views.properties        |   23 -
 grails-i18n/build.gradle                           |    5 +-
 .../plugins/i18n/AvailableLocaleResolver.java      |  155 +-
 .../plugins/i18n/EffectiveI18nDescriptors.java     |  141 -
 .../GrailsLocaleResolverAutoConfiguration.java     |   22 +-
 .../grails/plugins/i18n/I18nAutoConfiguration.java |  159 +
 .../org/grails/plugins/i18n/I18nDescriptor.java    |   60 -
 .../org/grails/plugins/i18n/I18nDescriptors.java   |  175 -
 .../plugins/i18n/I18nEnvironmentPostProcessor.java |  251 -
 .../grails/plugins/i18n/I18nGrailsPlugin.groovy    |  112 +-
 .../plugins/i18n/I18nRuntimeHintsProcessor.java    |  117 -
 .../src/main/resources/META-INF/spring.factories   |   19 -
 .../main/resources/META-INF/spring/aot.factories   |   20 -
 .../i18n/AvailableLocaleResolverSpec.groovy        |  190 +-
 ...railsLocaleResolverAutoConfigurationSpec.groovy |   24 -
 .../plugins/i18n/I18nAutoConfigurationSpec.groovy  |   96 +-
 .../grails/plugins/i18n/I18nDescriptorsSpec.groovy |  184 -
 .../i18n/I18nEnvironmentPostProcessorSpec.groovy   |  291 -
 .../plugins/i18n/I18nGrailsPluginSpec.groovy       |   17 +-
 .../i18n/I18nRuntimeHintsProcessorSpec.groovy      |  119 -
 .../i18n/MessageSourcePrecedenceSpec.groovy        |  124 -
 .../plugins/i18n/MessageSourceReloadSpec.groovy    |   97 -
 .../test/resources/META-INF/grails/i18n.properties |    8 -
 .../src/test/resources/alpha-plugin.properties     |    3 -
 .../src/test/resources/beta-plugin.properties      |    3 -
 grails-interceptors/build.gradle                   |    6 +-
 .../main/groovy/grails/artefact/Interceptor.groovy |   48 +-
 .../main/groovy/grails/interceptors/Matcher.groovy |   20 -
 ...ailsInterceptorHandlerInterceptorAdapter.groovy |   79 +-
 .../web/interceptors/UrlMappingMatcher.groovy      |   38 +-
 ...InterceptorHandlerInterceptorAdapterSpec.groovy |  325 -
 .../groovy/grails/artefact/InterceptorSpec.groovy  |  257 +-
 .../web/interceptors/UrlMappingMatcherSpec.groovy  |   67 +-
 grails-logging/build.gradle                        |    2 -
 grails-mail/build.gradle                           |    7 -
 .../plugins/mail/MailAutoConfiguration.groovy      |  118 +
 .../grails/plugins/mail/MailGrailsPlugin.groovy    |   93 +-
 .../grails/plugins/mail/PlainTextMailTagLib.groovy |    2 +-
 .../plugins/mail/MailAutoConfigurationSpec.groovy  |  150 -
 .../plugins/mail/PlainTextMailTagLibSpec.groovy    |   50 -
 .../build.gradle                                   |   25 +-
 .../micronaut/GrailsMicronautGrailsPlugin.groovy   |   96 +
 grails-mimetypes/build.gradle                      |   11 +-
 .../grails/mimetypes/aot/MimeTypeRuntimeHints.java |   57 -
 .../plugins/web/api/MimeTypesApiSupport.groovy     |    2 +-
 .../web/mime/HttpServletResponseExtension.groovy   |    8 +-
 .../main/resources/META-INF/spring/aot.factories   |    2 -
 grails-profiles/base/profile.yml                   |    2 +
 .../skeleton/gradle/wrapper/gradle-wrapper.jar     |  Bin 47505 -> 48462 bytes
 .../gradle/wrapper/gradle-wrapper.properties       |    2 +-
 grails-profiles/base/skeleton/gradlew              |    4 +-
 grails-profiles/base/skeleton/gradlew.bat          |    4 +-
 .../skeleton/grails-app/conf/logback-spring.xml    |   25 +
 .../skeleton/gradle/wrapper/gradle-wrapper.jar     |  Bin 47505 -> 48462 bytes
 .../gradle/wrapper/gradle-wrapper.properties       |    2 +-
 grails-profiles/profile/skeleton/gradlew           |    4 +-
 grails-profiles/profile/skeleton/gradlew.bat       |    4 +-
 .../artifacts/scaffolding/Controller.groovy        |    4 +-
 .../web/skeleton/grails-app/views/error.gsp        |    4 +-
 .../web/skeleton/grails-app/views/index.gsp        |   59 +-
 .../web/skeleton/grails-app/views/layouts/main.gsp |   35 +-
 grails-quartz/build.gradle                         |   89 -
 .../grails/plugins/quartz/JobManagerService.groovy |  122 -
 .../plugins/quartz/CustomTriggerFactoryBean.java   |  125 -
 .../plugins/quartz/DefaultGrailsJobClass.java      |  128 -
 .../grails/plugins/quartz/GrailsJobClass.java      |   89 -
 .../plugins/quartz/GrailsJobClassConstants.java    |   92 -
 .../grails/plugins/quartz/GrailsJobFactory.java    |  181 -
 .../plugins/quartz/JobArtefactHandler.groovy       |   75 -
 .../grails/plugins/quartz/JobDescriptor.groovy     |   54 -
 .../plugins/quartz/JobDetailFactoryBean.java       |  130 -
 .../groovy/grails/plugins/quartz/QuartzJob.groovy  |  154 -
 .../plugins/quartz/QuartzJobTraitInjector.groovy   |   33 -
 .../grails/plugins/quartz/TriggerDescriptor.groovy |   52 -
 .../grails/plugins/quartz/TriggerUtils.groovy      |   64 -
 .../plugins/quartz/cleanup/JdbcCleanup.groovy      |   63 -
 .../quartz/config/TriggersConfigBuilder.groovy     |  257 -
 .../listeners/ExceptionPrinterJobListener.java     |   46 -
 .../quartz/listeners/SessionBinderJobListener.java |   94 -
 .../main/groovy/quartz/QuartzGrailsPlugin.groovy   |  453 --
 grails-quartz/src/main/scripts/CreateJob.groovy    |   39 -
 grails-quartz/src/main/templates/Job.groovy        |   11 -
 .../plugins/quartz/CronTriggerTimeZoneSpec.groovy  |   62 -
 .../quartz/CustomTriggerFactoryBeanSpec.groovy     |  140 -
 .../quartz/DefaultGrailsJobClassSpec.groovy        |   96 -
 .../plugins/quartz/GrailsJobFactorySpec.groovy     |  198 -
 .../plugins/quartz/JobArtefactHandlerSpec.groovy   |   61 -
 .../grails/plugins/quartz/JobDescriptorSpec.groovy |   64 -
 .../plugins/quartz/JobDetailFactoryBeanSpec.groovy |  162 -
 .../grails/plugins/quartz/MockDoWithSpring.groovy  |   49 -
 .../grails/plugins/quartz/QuartzJobSpec.groovy     |  325 -
 .../quartz/QuartzJobTraitInjectorSpec.groovy       |   34 -
 .../grails/plugins/quartz/TestQuartzJob.groovy     |   32 -
 .../plugins/quartz/TriggerDescriptorSpec.groovy    |   73 -
 .../quartz/config/TriggersConfigBuilderSpec.groovy |  166 -
 .../groovy/quartz/QuartzGrailsPluginSpec.groovy    |  371 -
 .../groovy/quartz/QuartzJobStoreCleanupSpec.groovy |  242 -
 .../quartz/QuartzSchedulerContextSpec.groovy       |  145 -
 .../quartz/QuartzStartupSchedulingSpec.groovy      |  198 -
 .../test/groovy/quartz/jobs/ContextSpecJob.groovy  |   42 -
 grails-redis/build.gradle                          |    4 +-
 .../src/main/groovy/redis/RedisGrailsPlugin.groovy |   21 +-
 grails-rest-transforms/build.gradle                |    7 +-
 .../artefact/controller/RestResponder.groovy       |    2 +-
 .../groovy/grails/rest/RestfulController.groovy    |    2 +-
 .../rest/plugin/RestResponderGrailsPlugin.groovy   |    2 +-
 .../web/rest/render/ServletRenderContext.groovy    |    7 +-
 .../ServletRenderContextHttpMethodSpec.groovy      |   58 -
 grails-scaffolding/build.gradle                    |    9 +-
 .../grails/plugin/scaffolding/GormService.groovy   |    2 +
 .../scaffolding/RestfulServiceController.groovy    |    4 +-
 .../scaffolding/ScaffoldingGrailsPlugin.groovy     |    8 +-
 .../scaffolding/aot/ScaffoldingRuntimeHints.java   |   54 -
 .../main/resources/META-INF/spring/aot.factories   |    2 -
 .../templates/scaffolding/AsyncController.groovy   |    8 +-
 .../main/templates/scaffolding/Controller.groovy   |    6 +-
 .../src/main/templates/scaffolding/create.gsp      |    1 -
 .../src/main/templates/scaffolding/edit.gsp        |    1 -
 .../src/main/templates/scaffolding/index.gsp       |    3 +-
 .../src/main/templates/scaffolding/show.gsp        |    1 -
 .../ScaffoldedIndexViewModelSpec.groovy            |   63 -
 grails-services/build.gradle                       |    4 +-
 grails-shell-cli/build.gradle                      |   20 +-
 .../main/groovy/org/grails/cli/GrailsCli.groovy    |   58 +-
 ...SpringApplicationWebApplicationInitializer.java |   15 +-
 .../cli/command/run/SpringApplicationRunner.java   |   26 +-
 ...ltRepositorySystemSessionAutoConfiguration.java |   55 -
 .../grails/cli/gradle/GradleAsyncInvoker.groovy    |    3 +-
 .../cli/gradle/cache/CachedGradleOperation.groovy  |    3 +-
 .../completers/ClassNameCompleter.groovy           |    3 +-
 .../org/grails/cli/profile/AbstractProfile.groovy  |    4 +-
 .../grails/cli/profile/ProfileRepoConfig.groovy    |    2 +-
 .../cli/profile/commands/CreateAppCommand.groovy   |    4 +-
 .../commands/DefaultMultiStepCommand.groovy        |    3 +-
 .../ApplicationContextCommandFactory.groovy        |   62 +-
 .../factory/GroovyScriptCommandFactory.groovy      |    2 -
 .../commands/templates/TemplateRendererImpl.groovy |    3 +-
 .../repository/MavenProfileRepository.groovy       |   35 +-
 .../org/grails/cli/GrailsCliLoggingVerifier.groovy |   63 -
 .../cli/GrailsCliProjectDetectionSpec.groovy       |   57 -
 .../groovy/org/grails/cli/GrailsCliSpec.groovy     |  101 -
 ...ApplicationWebApplicationInitializerSpec.groovy |   97 -
 .../cli/command/run/LifecycleVerifier.groovy       |  195 -
 .../command/run/SpringApplicationRunnerSpec.groovy |  133 -
 ...sitorySystemSessionAutoConfigurationSpec.groovy |   97 -
 .../gradle/RunningApplicationProcessSpec.groovy    |   20 +-
 .../grails/cli/profile/AbstractProfileSpec.groovy  |  119 -
 .../profile/commands/CreateAppCommandSpec.groovy   |    2 +-
 .../ApplicationContextCommandFactorySpec.groovy    |  113 -
 .../factory/LegacyPluginScriptCompatSpec.groovy    |  107 -
 .../MavenProfileRepositorySnapshotSpec.groovy      |   53 -
 .../gradle/wrapper/gradle-wrapper.jar              |  Bin 47505 -> 48462 bytes
 .../gradle/wrapper/gradle-wrapper.properties       |    2 +-
 .../src/test/resources/gradle-sample/gradlew       |    4 +-
 .../src/test/resources/gradle-sample/gradlew.bat   |    4 +-
 .../spring-boot-dependencies-effective-bom.xml     |    9 -
 .../acl/SpringSecurityAclGrailsPlugin.groovy       |    8 +-
 .../conf/DefaultCasSecurityConfig.groovy           |    5 +-
 .../cas/plugin/grails-app/conf/logback.xml         |    1 +
 .../cas/SpringSecurityCasGrailsPlugin.groovy       |   48 +-
 grails-spring-security/compat/build.gradle         |    7 -
 .../web/util/matcher/AntPathRequestMatcher.groovy  |   38 +-
 .../util/matcher/AntPathRequestMatcherSpec.groovy  |  122 -
 grails-spring-security/ldap/plugin/build.gradle    |    4 -
 .../ldap/plugin/grails-app/conf/logback.xml        |    1 +
 .../ldap/SpringSecurityLdapGrailsPlugin.groovy     |    8 +-
 grails-spring-security/oauth2/plugin/build.gradle  |    6 +-
 ...urity-oauth2.properties => messages.properties} |    0
 .../oauth2/SpringSecurityOauth2GrailsPlugin.groovy |    2 +-
 grails-spring-security/plugin/build.gradle         |   12 +-
 .../plugin/springsecurity/ReflectionUtils.groovy   |    7 +-
 .../SpringSecurityCoreGrailsPlugin.groovy          |    8 +-
 .../springsecurity/SpringSecurityUtils.groovy      |   12 +-
 ...tContextHolderExceptionTranslationFilter.groovy |    6 +
 .../web/filter/IpAddressFilter.groovy              |   50 +-
 ...ata.json => spring-configuration-metadata.json} |  124 +
 .../ConfigurationMetadataSpec.groovy               |   82 -
 .../springsecurity/ReflectionUtilsSpec.groovy      |   48 -
 ...textHolderExceptionTranslationFilterSpec.groovy |   93 -
 .../web/filter/IpAddressFilterSpec.groovy          |  178 -
 grails-spring-security/rest/core/build.gradle      |    3 -
 .../rest/SpringSecurityRestGrailsPlugin.groovy     |   10 +-
 grails-spring-security/rest/gorm/build.gradle      |    1 -
 .../rest/SpringSecurityRestGormGrailsPlugin.groovy |   10 +-
 .../rest/grailscache/build.gradle                  |    3 -
 ...pringSecurityRestGrailsCacheGrailsPlugin.groovy |   10 +-
 grails-spring-security/rest/memcached/build.gradle |    1 -
 .../SpringSecurityRestMemcachedGrailsPlugin.groovy |    8 +-
 grails-spring-security/rest/redis/build.gradle     |    1 -
 .../SpringSecurityRestRedisGrailsPlugin.groovy     |   10 +-
 grails-spring-security/ui/plugin/build.gradle      |   16 +-
 ...ties => messages.spring-security-ui.properties} |    0
 .../ui/SpringSecurityUiGrailsPlugin.groovy         |    8 +-
 grails-spring/build.gradle                         |    1 -
 .../spring/DefaultRuntimeSpringConfiguration.java  |   32 +-
 ...DefaultRuntimeSpringConfigurationAotSpec.groovy |   96 -
 grails-test-core/build.gradle                      |   32 +-
 .../AbstractGrailsMockHttpServletResponse.groovy   |   14 +-
 .../grails/test/io/SystemOutAndErrSwapper.groovy   |   24 +-
 .../org/grails/test/report/junit/JUnitReports.java |   90 +
 .../test/report/junit/JUnitReportsFactory.java     |   75 +
 .../grails/test/report/junit/PlainFormatter.java   |  110 +
 .../org/grails/test/report/junit/XMLFormatter.java |   62 +
 grails-test-examples/aot/build.gradle              |   96 -
 .../aot/grails-app/conf/application.yml            |   20 -
 .../controllers/aot/GreetingController.groovy      |   30 -
 .../grails-app/controllers/aot/UrlMappings.groovy  |   29 -
 .../aot/grails-app/init/aot/Application.groovy     |  112 -
 .../grails-app/services/aot/GreetingService.groovy |   30 -
 .../grails-app/taglib/aot/GreetingTagLib.groovy    |   38 -
 .../aot/grails-app/views/greeting/index.gsp        |   35 -
 .../app1/grails-app/conf/application.yml           |    6 +-
 .../functionaltests/IncludesController.groovy      |   13 -
 .../controllers/functionaltests/UrlMappings.groovy |    3 -
 .../fileupload/FileUploadTestController.groovy     |   20 -
 .../requestpath/RequestPathController.groovy       |   78 -
 .../RequestPathForwarderController.groovy          |   37 -
 .../fileupload/FileUploadSpec.groovy               |   81 -
 .../requestpath/RequestPathSpec.groovy             |  148 -
 .../functionaltests/CompiledTagCallSpec.groovy     |   66 -
 .../controllers/app2/TestController.groovy         |    8 -
 .../GrailsUtilStackFiltererIntegrationSpec.groovy  |   59 -
 .../groovy/app2/RecordingStackTraceFilterer.groovy |   57 -
 .../app4/grails-app/conf/application.yml           |    4 -
 .../controllers/app4/ErrorsController.groovy       |    5 -
 .../grails-app/controllers/app4/UrlMappings.groovy |    1 -
 .../app4/OversizedUploadFunctionalSpec.groovy      |   66 -
 .../async-events-pubsub-demo/build.gradle          |    1 +
 .../grails-app/conf/logback.xml                    |    1 +
 .../pubsub/demo/TimeoutController.groovy           |   34 -
 .../integration-test/resources/logback-test.xml    |    1 +
 grails-test-examples/beans-dsl-plugin/build.gradle |   68 -
 .../example/plugin/FarewellGrailsPlugin.groovy     |   47 -
 .../example/plugin/GreetingGrailsPlugin.groovy     |   52 -
 .../example/plugin/SalutationGrailsPlugin.groovy   |   50 -
 .../FarewellGrailsPluginAutoDiscoverySpec.groovy   |   74 -
 .../GreetingGrailsPluginAutoDiscoverySpec.groovy   |   82 -
 .../SalutationGrailsPluginAutoDiscoverySpec.groovy |  101 -
 grails-test-examples/beans-dsl/build.gradle        |   63 -
 .../groovy/beandsl/example/ExampleBeans.groovy     |   45 -
 .../groovy/beandsl/example/FancyGreeter.groovy     |   31 -
 .../main/groovy/beandsl/example/LoudGreeter.groovy |   37 -
 .../ExampleBeansAutoConfigurationSpec.groovy       |   74 -
 .../example/ExampleBeansAutoDiscoverySpec.groovy   |   62 -
 grails-test-examples/benchmarks/README.adoc        |  163 -
 grails-test-examples/benchmarks/build.gradle       |  305 -
 .../controllers/ControllerActionBenchmark.java     |  252 -
 .../ControllerMappingCollectionBenchmark.java      |  195 -
 .../controllers/ControllerResponseBenchmark.java   |  248 -
 .../databinding/SimpleDataBinderBenchmark.java     |  175 -
 .../benchmarks/gsp/GroovyPageParserBenchmark.java  |   97 -
 .../interceptors/InterceptorChainBenchmark.java    |  183 -
 .../interceptors/UrlMappingMatcherBenchmark.java   |  156 -
 .../grails/benchmarks/ruler/CpuRulerBenchmark.java |   58 -
 .../benchmarks/ruler/MemoryRulerBenchmark.java     |   63 -
 .../urlmappings/UrlMappingsBenchmark.java          |  135 -
 .../views/ViewTemplateRenderingBenchmark.java      |   97 -
 .../benchmarks/web/GrailsWebRequestBenchmark.java  |  132 -
 .../web/MultipartResolutionBenchmark.java          |  135 -
 .../web/RequestPropertyAccessBenchmark.java        |  108 -
 .../controllers/ControllerFixture.groovy           |  108 -
 .../controllers/ControllerMappingsFixture.groovy   |   95 -
 .../controllers/ControllerResponseFixture.groovy   |  106 -
 .../interceptors/InterceptorChainFixture.groovy    |   54 -
 .../interceptors/InterceptorFixture.groovy         |   32 -
 .../urlmappings/UrlMappingsFixture.groovy          |   41 -
 .../benchmarks/views/ViewTemplateFixture.groovy    |   52 -
 .../benchmarks/web/RequestPropertyFixture.groovy   |   55 -
 .../grails/benchmarks/web/WebContextFixture.groovy |   57 -
 .../benchmarks/report/BenchmarkComparator.groovy   |  133 -
 .../grails/benchmarks/report/CommentPoster.groovy  |  121 -
 .../grails/benchmarks/report/Comparison.groovy     |   60 -
 .../grails/benchmarks/report/JmhCompare.groovy     |  113 -
 .../grails/benchmarks/report/JmhResults.groovy     |  140 -
 .../grails/benchmarks/report/ReportRenderer.groovy |  173 -
 .../report/BenchmarkComparatorSpec.groovy          |   69 -
 .../report/GitHubCommentsHttpSpec.groovy           |  119 -
 .../benchmarks/report/GoldenReportSpec.groovy      |   75 -
 .../grails/benchmarks/report/JmhCompareSpec.groovy |  123 -
 .../grails/benchmarks/report/PostFileSpec.groovy   |  122 -
 .../resources/jmh-golden/broad-base.json           |    1 -
 .../resources/jmh-golden/broad-head.json           |    1 -
 .../resources/jmh-golden/edges-base.json           |    1 -
 .../resources/jmh-golden/edges-head.json           |    1 -
 .../resources/jmh-golden/expected-broad.md         |   37 -
 .../resources/jmh-golden/expected-edges.md         |   35 -
 .../resources/jmh-golden/expected-headonly.md      |   20 -
 .../resources/jmh-golden/expected-norulers.md      |   24 -
 .../resources/jmh-golden/expected-numbers.md       |   32 -
 .../resources/jmh-golden/expected-shards.md        |   32 -
 .../resources/jmh-golden/norulers-base.json        |    1 -
 .../resources/jmh-golden/norulers-head.json        |    1 -
 .../resources/jmh-golden/numbers-base.json         |    1 -
 .../resources/jmh-golden/numbers-head.json         |    1 -
 .../resources/jmh-golden/shards-base/shard-a.json  |    1 -
 .../resources/jmh-golden/shards-base/shard-b.json  |    1 -
 .../resources/jmh-golden/shards-head/shard-a.json  |    1 -
 .../resources/jmh-golden/shards-head/shard-b.json  |    1 -
 grails-test-examples/cache/build.gradle            |    1 +
 .../src/test/groovy/demo/TestControllerSpec.groovy |    7 -
 .../external-configuration/build.gradle            |    1 +
 .../grails-app/conf/logback-spring.xml             |    1 +
 grails-test-examples/geb-context-path/build.gradle |    1 +
 grails-test-examples/geb-gebconfig/build.gradle    |    1 +
 .../grails-app/conf/logback-spring.xml             |    1 +
 grails-test-examples/geb/build.gradle              |    1 +
 .../geb/grails-app/conf/logback-spring.xml         |    1 +
 .../org/demo/spock/PerTestRecordingSpec.groovy     |   54 +-
 grails-test-examples/gorm/build.gradle             |    7 +-
 .../services/gorm/TransactionTestService.groovy    |   16 -
 .../groovy/gorm/TransactionPropagationSpec.groovy  |    8 -
 .../domain/grails/test/app/Address.groovy          |    3 -
 .../grails-app/domain/grails/test/app/User.groovy  |    3 +-
 .../domain/grails/test/app/UserRole.groovy         |    2 -
 .../groovy/grails/test/app/pogo/Profile.groovy     |    6 -
 .../gsp-compile-static/build.gradle                |   70 -
 .../controllers/gspstatic/DemoController.groovy    |   40 -
 .../controllers/gspstatic/UrlMappings.groovy       |   29 -
 .../grails-app/taglib/gspstatic/DemoTagLib.groovy  |   32 -
 .../grails-app/views/demo/declared.gsp             |   30 -
 .../grails-app/views/demo/frameworkNames.gsp       |   31 -
 .../grails-app/views/demo/index.gsp                |   34 -
 .../gsp-compile-static/grails-app/views/error.gsp  |   20 -
 .../grails-app/views/notFound.gsp                  |   20 -
 .../groovy/gspstatic/GspCompileStaticSpec.groovy   |  129 -
 grails-test-examples/gsp-layout/build.gradle       |   12 +-
 .../gsp-layout/grails-app/conf/logback-spring.xml  |    1 +
 .../views/gsp/layout/AbstractGrailsTagTests.groovy |   24 +-
 grails-test-examples/gsp-sitemesh3/build.gradle    |    1 +
 .../grails-app/conf/logback-spring.xml             |    1 +
 .../gsp-spring-boot/app/build.gradle               |   69 +-
 .../app/src/main/assets/javascripts/application.js |   24 -
 .../app/src/main/assets/javascripts/theme.js       |   75 -
 .../src/main/assets/stylesheets/application.css    |   32 -
 .../app/src/main/java/hello/JspSupport.java        |   53 -
 .../app/src/main/java/hello/JspViewController.java |   40 -
 .../app/src/main/java/hello/WebController.java     |   62 +-
 .../app/src/main/resources/application.properties  |   17 +-
 .../app/src/main/resources/templates/form.gsp      |   54 +-
 .../src/main/resources/templates/layouts/main.gsp  |   94 +-
 .../main/resources/templates/layouts/sample.gsp    |   13 +-
 .../app/src/main/resources/templates/results.gsp   |   21 +-
 .../gsp-spring-boot/app/src/main/webapp/form.jsp   |   46 +-
 .../app/src/test/java/hello/AssetLinkTest.java     |   76 -
 .../app/src/test/java/hello/ErrorPageTest.java     |   61 -
 .../app/src/test/java/hello/JspSupportTest.java    |   58 -
 .../app/src/test/java/hello/JspViewTest.java       |   75 -
 .../src/test/java/hello/PrecompiledViewTest.java   |   57 -
 .../src/test/java/hello/StandaloneContextTest.java |   68 -
 .../app/src/test/java/hello/WebControllerTest.java |  108 +-
 .../hibernate5/criteria-extension/build.gradle     |    4 -
 .../build.gradle                                   |    2 -
 .../grails-database-per-tenant/build.gradle        |    2 -
 .../grails-hibernate-groovy-proxy/build.gradle     |    4 -
 .../grails-multiple-datasources/build.gradle       |    2 -
 .../build.gradle                                   |    2 -
 .../grails-partitioned-multi-tenancy/build.gradle  |    4 +-
 .../grails-schema-per-tenant/build.gradle          |    1 -
 .../functionaltests/ManagedEntityDomain.groovy     |   27 -
 .../async-events-pubsub-demo/build.gradle          |    1 +
 .../grails-app/conf/logback.xml                    |    1 +
 .../integration-test/resources/logback-test.xml    |    1 +
 .../hibernate7/criteria-extension/build.gradle     |    4 -
 .../src/test/groovy/demo/TestControllerSpec.groovy |    7 -
 grails-test-examples/hibernate7/gorm/build.gradle  |    2 +-
 .../services/gorm/TransactionTestService.groovy    |   16 -
 .../groovy/gorm/TransactionPropagationSpec.groovy  |    8 -
 .../build.gradle                                   |    2 -
 .../grails-database-per-tenant/build.gradle        |    1 -
 .../grails-hibernate-groovy-proxy/build.gradle     |    4 -
 .../grails-multiple-datasources/build.gradle       |    2 -
 .../build.gradle                                   |    2 -
 .../grails-partitioned-multi-tenancy/build.gradle  |    1 -
 .../grails-schema-per-tenant/build.gradle          |    1 -
 .../grails-app/views/product/index.gson            |    2 +-
 .../issue-10279/grails-app/conf/logback.xml        |    1 +
 .../neo4j-standalone => issue-11767}/build.gradle  |   23 +-
 .../grails-app/conf/application.yml                |   16 +-
 .../grails-app/conf/logback.xml                    |    3 +
 .../issue11767/app/AppController.groovy            |   51 +
 .../controllers/issue11767/app}/UrlMappings.groovy |    7 +-
 .../init/issue11767/app}/Application.groovy        |    4 +-
 .../issue11767/app/ConfigLoadingSpec.groovy}       |   29 +-
 .../issue11767/app/AppGroovyMicronautBean.groovy   |   15 +-
 .../issue-15228/grails-app/conf/logback.xml        |    1 +
 grails-test-examples/jetty/build.gradle            |    2 +-
 .../jetty/grails-app/conf/application.yml          |    5 -
 .../jetty/grails-app/conf/logback-spring.xml       |    1 +
 .../controllers/issue12688/UploadController.groovy |   30 -
 .../controllers/issue12688/UrlMappings.groovy      |    1 -
 .../issue12688/JettyOversizedUploadSpec.groovy     |   61 -
 grails-test-examples/mail/build.gradle             |    3 +-
 .../mail/grails-app/conf/logback-spring.xml        |    1 +
 .../build.gradle                                   |   35 +-
 .../grails-app/conf/application.yml                |   30 +-
 .../micronautgroovyonly}/UrlMappings.groovy        |    3 +-
 .../init/micronautgroovyonly}/Application.groovy   |    4 +-
 .../BeanInjectionService.groovy}                   |   28 +-
 .../micronautgroovyonly/TestService.groovy}        |    8 +-
 .../BeanInjectionServiceSpec.groovy}               |   40 +-
 .../MicronautContextSpec.groovy                    |   83 +
 .../MicronautQualifierSpec.groovy                  |   97 +
 .../main/groovy/bean/injection/AppConfig.groovy}   |   12 +-
 .../bean/injection/FactoryCreatedService.groovy    |    9 +-
 .../groovy/bean/injection/NamedService.groovy}     |    6 +-
 .../bean/injection/PrimaryNamedService.groovy}     |   17 +-
 .../main/groovy/bean/injection/Qualified.groovy    |   13 +-
 .../bean/injection/QualifiedNamedService.groovy}   |   18 +-
 .../bean/injection/RegularNamedService.groovy}     |   14 +-
 .../groovy/bean/injection/ServiceFactory.groovy}   |   20 +-
 .../bean/injection/SpecialNamedService.groovy}     |   14 +-
 .../build.gradle                                   |   47 +-
 .../grails-app/conf/application.yml                |   17 +-
 .../grails-app/conf/logback.xml                    |    0
 .../micronaut/hibernate5/UrlMappings.groovy}       |   28 +-
 .../init/micronaut/hibernate5/Application.groovy}  |   27 +-
 .../grails-app/views/index.gsp}                    |   24 +-
 .../hibernate5/ApplicationStartupSpec.groovy       |   33 +
 .../gorm => micronaut-hibernate7}/build.gradle     |   45 +-
 .../grails-app/conf/application.yml                |   17 +-
 .../grails-app/conf/logback.xml                    |    0
 .../micronaut/hibernate7/UrlMappings.groovy}       |   28 +-
 .../init/micronaut/hibernate7/Application.groovy}  |   27 +-
 .../grails-app/views/index.gsp}                    |   24 +-
 .../hibernate7/ApplicationStartupSpec.groovy       |   33 +
 .../micronaut}/.gitignore                          |    0
 .../{undertow => micronaut}/build.gradle           |   54 +-
 .../grails-app/assets}/images/advancedgrails.svg   |    0
 .../assets/images/apple-touch-icon-retina.png      |  Bin
 .../grails-app/assets/images/apple-touch-icon.png  |  Bin
 .../grails-app/assets/images}/documentation.svg    |    0
 .../grails-app/assets/images}/favicon.ico          |  Bin
 .../assets/images}/grails-cupsonly-logo-white.svg  |    0
 .../micronaut/grails-app/assets/images}/grails.svg |    0
 .../grails-app/assets/images/skin/database_add.png |  Bin
 .../assets/images/skin/database_delete.png         |  Bin
 .../assets/images/skin/database_edit.png           |  Bin
 .../assets/images/skin/database_save.png           |  Bin
 .../assets/images/skin/database_table.png          |  Bin
 .../grails-app/assets/images/skin/exclamation.png  |  Bin
 .../grails-app/assets/images/skin/house.png        |  Bin
 .../grails-app/assets/images/skin/information.png  |  Bin
 .../grails-app/assets/images/skin/shadow.jpg       |  Bin
 .../grails-app/assets/images/skin/sorted_asc.gif   |  Bin
 .../grails-app/assets/images/skin/sorted_desc.gif  |  Bin
 .../grails-app/assets/images/slack.svg             |    0
 .../grails-app/assets/images/spinner.gif           |  Bin
 .../grails-app/assets/javascripts/application.js   |    0
 .../grails-app/assets/stylesheets/application.css  |    0
 .../grails-app/assets/stylesheets/errors.css       |    0
 .../grails-app/assets/stylesheets/grails.css       |    0
 .../grails-app/assets/stylesheets/main.css         |    0
 .../grails-app/assets/stylesheets/mobile.css       |    0
 .../grails-app/conf/application.yml                |   60 +-
 .../grails-app/conf/logback.xml                    |    0
 .../grails-app/conf/spring/resources.groovy        |    0
 .../micronaut/ExternalApiController.groovy         |  113 +
 .../micronaut/MicronautTestController.groovy       |   42 +-
 .../controllers/micronaut/UrlMappings.groovy       |   50 +
 .../grails-app/i18n/messages.properties            |    0
 .../grails-app/i18n/messages_cs.properties         |    0
 .../grails-app/i18n/messages_da.properties         |    0
 .../grails-app/i18n/messages_de.properties         |    0
 .../grails-app/i18n/messages_es.properties         |    0
 .../grails-app/i18n/messages_fr.properties         |    0
 .../grails-app/i18n/messages_it.properties         |    0
 .../grails-app/i18n/messages_ja.properties         |    0
 .../grails-app/i18n/messages_nb.properties         |    0
 .../grails-app/i18n/messages_nl.properties         |    0
 .../grails-app/i18n/messages_pl.properties         |    0
 .../grails-app/i18n/messages_pt_BR.properties      |    0
 .../grails-app/i18n/messages_pt_PT.properties      |    0
 .../grails-app/i18n/messages_ru.properties         |    0
 .../grails-app/i18n/messages_sk.properties         |    0
 .../grails-app/i18n/messages_sv.properties         |    0
 .../grails-app/i18n/messages_th.properties         |    0
 .../grails-app/i18n/messages_zh_CN.properties      |    0
 .../grails-app/init/micronaut}/Application.groovy  |    6 +-
 .../grails-app/init/micronaut}/BootStrap.groovy    |    4 +-
 .../micronaut/BeanInjectionService.groovy}         |   28 +-
 .../services/micronaut/ExternalApiService.groovy   |  110 +
 .../services/micronaut/TestService.groovy}         |    8 +-
 .../base => micronaut}/grails-app/views/error.gsp  |    0
 .../grails-app/views/index.gsp                     |    0
 .../grails-app/views/layouts/main.gsp              |    0
 .../grails-app/views/notFound.gsp                  |    0
 .../micronaut/BeanInjectionServiceSpec.groovy}     |   42 +-
 .../micronaut/MicronautBeanDuplicationSpec.groovy  |  105 +
 .../groovy/micronaut/MicronautBeanTypesSpec.groovy |   99 +
 .../groovy/micronaut/MicronautContextSpec.groovy   |   92 +
 .../MicronautDeclarativeClientSpec.groovy          |  250 +
 .../micronaut/MicronautErsatzAdvancedSpec.groovy   |  563 ++
 .../micronaut/MicronautErsatzPatternSpec.groovy    |  450 ++
 .../micronaut/MicronautErsatzRoundtripSpec.groovy  |  429 ++
 .../micronaut/MicronautPluginBeanSpec.groovy       |   85 +
 .../groovy/micronaut/MicronautQualifierSpec.groovy |  106 +
 .../main/groovy/bean/injection/AppConfig.groovy}   |   12 +-
 .../bean/injection/FactoryCreatedService.groovy}   |    8 +-
 .../main/groovy/bean/injection/NamedService.java   |   21 +-
 .../bean/injection/PrimaryNamedService.groovy}     |   18 +-
 .../main/groovy/bean/injection/Qualified.groovy}   |   18 +-
 .../bean/injection/QualifiedNamedService.groovy}   |   13 +-
 .../bean/injection/RegularNamedService.groovy}     |   14 +-
 .../groovy/bean/injection/ServiceFactory.groovy}   |   20 +-
 .../bean/injection/SpecialNamedService.groovy}     |   14 +-
 .../client/MicronautAdvancedClient.groovy          |   59 +
 .../client/MicronautFilteredClient.groovy          |   19 +-
 .../micronaut/client/MicronautHeaderClient.groovy  |   20 +-
 .../micronaut/client/MicronautPathClient.groovy    |   25 +-
 .../client/MicronautReactiveClient.groovy          |   39 +-
 .../micronaut/client/MicronautTestClient.groovy    |   42 +-
 .../java/bean/injection/JavaMessageProvider.java   |   21 +-
 .../java/bean/injection/JavaSingletonService.java  |   24 +-
 .../micronaut/client/MicronautRetryableClient.java |   22 +-
 .../micronaut/filter/AuthTokenClientFilter.java    |   21 +-
 grails-test-examples/mongodb/base/build.gradle     |    1 +
 .../functional/tests/LocalMongoUnitSpec.groovy     |    2 +
 .../mongodb/database-per-tenant/build.gradle       |    1 +
 .../mongodb/hibernate5/build.gradle                |    1 +
 .../mongodb/test-data-service/build.gradle         |    2 -
 grails-test-examples/neo4j/base/build.gradle       |   68 -
 .../groovy/functional/tests/pages/BookPages.groovy |   58 -
 grails-test-examples/neo4j/hibernate5/build.gradle |   79 -
 .../neo4j/hibernate5/grails-app/views/error.gsp    |   49 -
 .../functional/tests/pages/AuthorPages.groovy      |   58 -
 .../groovy/functional/tests/pages/BookPages.groovy |   58 -
 .../neo4j/spring-boot/build.gradle                 |   53 -
 .../neo4j/test-data-service/build.gradle           |   60 -
 .../plugins/issue-11767/build.gradle               |  125 +
 .../issue-11767}/grails-app/conf/plugin.yml        |    5 +-
 .../init/issue11767/plugin}/Application.groovy     |    6 +-
 .../issue11767/plugin/MyPluginGrailsPlugin.groovy  |   19 +-
 .../plugin/PluginGroovyMicronautBean.groovy        |   16 +-
 .../plugin/PluginGroovySpringBean.groovy}          |   17 +-
 .../issue11767/plugin/PluginJavaMicronautBean.java |   30 +-
 .../{loadfirst.properties => messages.properties}  |    0
 ..._en_US.properties => messages_en_US.properties} |    0
 .../micronaut-singleton}/build.gradle              |   25 +-
 .../MicronautSingletonGrailsPlugin.groovy          |   10 +-
 .../plugins/micronaut/PluginMessageProvider.java   |   22 +-
 .../plugins/micronaut/PluginSingletonService.java  |   24 +-
 grails-test-examples/quartz/build.gradle           |   66 -
 .../quartz/grails-app/conf/application.yml         |   20 -
 .../grails-app/init/quartzapp/Application.groovy   |   29 -
 .../grails-app/init/quartzapp/BootStrap.groovy     |   31 -
 .../grails-app/jobs/quartzapp/DisabledJob.groovy   |   31 -
 .../jobs/quartzapp/InterruptibleJob.groovy         |   52 -
 .../jobs/quartzapp/LongRunningJob.groovy           |   46 -
 .../jobs/quartzapp/NeverFiringJob.groovy           |   33 -
 .../grails-app/jobs/quartzapp/OnDemandJob.groovy   |   38 -
 .../grails-app/jobs/quartzapp/RepeatingJob.groovy  |   39 -
 .../quartzapp/QuartzLongRunningJobSpec.groovy      |  110 -
 .../groovy/quartzapp/QuartzSchedulingSpec.groovy   |  144 -
 .../groovy/quartzapp/RecordingJobListener.groovy   |   53 -
 grails-test-examples/redis/build.gradle            |    5 +-
 grails-test-examples/scaffolding/build.gradle      |    9 +-
 .../controllers/com/example/BookController.groovy  |   32 -
 .../controllers/com/example/UrlMappings.groovy     |    1 -
 .../grails-app/domain/com/example/Book.groovy      |   30 -
 .../grails-app/init/com/example/Application.groovy |   22 +-
 .../grails-app/init/com/example/BootStrap.groovy   |    4 -
 .../services/com/example/BookService.groovy        |   27 -
 .../groovy/com/example/BookControllerSpec.groovy   |   61 -
 .../groovy/com/example/pages/BookListPage.groovy   |   32 -
 .../spring-dependency-management/build.gradle      |   53 +-
 .../grails-app/conf/application.yml                |    0
 .../grails-app/controllers/UrlMappings.groovy      |    0
 .../controllers/springdm/HelloController.groovy    |    0
 .../grails-app/init/springdm/Application.groovy    |    0
 .../grails-app/views/error.gsp                     |    0
 .../grails-app/views/index.gsp                     |    0
 .../grails-app/views/notFound.gsp                  |    0
 .../groovy/springdm/HelloControllerSpec.groovy     |    0
 .../acl/functional-test-app/build.gradle           |    3 +-
 .../grails-app/conf/logback.xml                    |    1 +
 .../acl/integration-test-app/build.gradle          |    2 -
 .../grails-app/conf/logback.xml                    |    1 +
 grails-test-examples/spring-security/cas/README.md |   85 +-
 .../spring-security/cas/test1/build.gradle         |   28 +-
 .../cas/test1/grails-app/conf/application.groovy   |   80 +-
 .../cas/test1/grails-app/conf/logback.xml          |    1 +
 .../test1/grails-app/conf/spring/resources.groovy  |   24 -
 .../cas/test/SecureController.groovy               |   58 -
 .../spring/security/cas/SecureController.groovy}   |   21 +-
 .../security/cas}/UrlMappings.groovy               |    2 +-
 .../test1}/grails-app/domain/com/test/Role.groovy  |    0
 .../springsecurity/cas => com}/test/User.groovy    |    2 +-
 .../cas => com}/test/UserRole.groovy               |    2 +-
 .../plugin/springsecurity/cas/test/Role.groovy     |   44 -
 .../security}/cas/test/Application.groovy          |    2 +-
 .../security}/cas/test/BootStrap.groovy            |    6 +-
 .../springsecurity/cas/test/AbstractCasSpec.groovy |  185 -
 .../springsecurity/cas/test/CasLoginSpec.groovy    |   93 -
 .../cas/test/CasNoProxyReceptorSpec.groovy         |   81 -
 .../cas/test/CasNoSingleSignOutSpec.groovy         |   58 -
 .../cas/test/CasProxyTicketSpec.groovy             |   63 -
 .../cas/test/CasSingleSignOutSpec.groovy           |   74 -
 .../cas/test/CasContainerHolder.groovy             |  111 -
 .../cas/test/CasServiceUrlConfigurer.groovy        |   57 -
 .../springsecurity/cas/test/CasTestConfig.groovy   |   84 -
 .../test/CasTestEnvironmentPostProcessor.groovy    |   62 -
 .../src/main/resources/META-INF/spring.factories   |   19 -
 .../cas/services/grailsTest-10000001.json          |   12 -
 .../core/functional-test-app/build.gradle          |    2 -
 .../core/integration-test-app/build.gradle         |    2 -
 .../springsecurity/PluginMessageBundleSpec.groovy  |   55 -
 .../misc-functional-test-app/group/build.gradle    |    2 -
 .../integration-test/groovy/demo/LoginPage.groovy  |    6 -
 .../misc-functional-test-app/roles/build.gradle    |    2 -
 .../integration-test/groovy/demo/LoginPage.groovy  |    6 -
 .../build.gradle                                   |    3 +-
 .../grails-app/conf/logback-spring.xml             |    1 +
 .../ldap/functional-test-app/build.gradle          |    3 +-
 .../grails-app/conf/logback-spring.xml             |    1 +
 .../ldap/retrieve-db-roles/build.gradle            |    3 +-
 .../grails-app/conf/logback-spring.xml             |    1 +
 .../ldap/retrieve-group-roles/build.gradle         |    3 +-
 .../grails-app/conf/logback-spring.xml             |    1 +
 .../spring-security/ui/common/build.gradle         |    3 -
 .../spring-security/ui/extended/build.gradle       |    5 +-
 .../ui/extended/grails-app/conf/logback.xml        |    1 +
 .../spring-security/ui/simple/build.gradle         |    1 +
 .../ui/simple/grails-app/conf/logback.xml          |    1 +
 grails-test-examples/undertow/build.gradle         |    4 +-
 .../undertow/grails-app/conf/application.yml       |    5 -
 .../undertow/grails-app/conf/logback-spring.xml    |    1 +
 .../undertowapp/UploadController.groovy            |   30 -
 .../controllers/undertowapp/UrlMappings.groovy     |    1 -
 .../undertowapp/UndertowOversizedUploadSpec.groovy |   61 -
 .../grails-app/views/product/index.gson            |    2 +-
 grails-test-report/build.gradle                    |   23 +-
 grails-test-suite-base/build.gradle                |    1 -
 grails-test-suite-persistence/build.gradle         |    4 +-
 .../web/databinding/GrailsWebDataBinderSpec.groovy |  447 +-
 grails-test-suite-uber/build.gradle                |   21 +-
 .../ResourceAnnotationRestfulControllerSpec.groovy |    2 +-
 .../grails/test/mixin/RestfulControllerSpec.groovy |    2 +-
 .../commons/DefaultGrailsCodecClassTests.groovy    |   16 -
 .../grails/plugins/CoreGrailsPluginTests.groovy    |   68 +-
 .../groovy/org/grails/plugins/PluginTests.java     |    7 +-
 .../GrailsMockHttpServletResponseTests.groovy      |   33 -
 .../web/filters/HiddenHttpMethodFilterTests.groovy |   55 -
 .../ParamsAwareLocaleChangeInterceptorTests.groovy |   51 -
 .../DefaultGrailsApplicationAttributesSpec.groovy  |   90 -
 .../org/grails/web/util/WebUtilsTests.groovy       |   40 -
 grails-test-suite-web/build.gradle                 |   19 +-
 ...ollerActionTransformerAllowedMethodsSpec.groovy |  117 +-
 ...ngHelperDomainClassSpecialPropertiesSpec.groovy |  113 +-
 .../DefaultDatabindingWhitelistBehaviorSpec.groovy |  117 -
 .../groovy/org/grails/web/codecs/CodecSpec.groovy  |   40 -
 .../CommandObjectInstantiationSpec.groovy          |   50 -
 .../web/commandobjects/CommandObjectsSpec.groovy   |   29 -
 .../web/mapping/UrlMappingParameterTests.groovy    |    6 +-
 .../grails/web/servlet/BindDataMethodTests.groovy  | 1437 +---
 .../web/servlet/mvc/GrailsWebRequestSpec.groovy    |  120 -
 .../mvc/SynchronizerTokensHolderTests.groovy       |  145 -
 grails-testing-support-core/build.gradle           |    2 -
 .../grails/testing/services/ServiceUnitTest.groovy |    2 +-
 .../IntegrationTestAstTransformation.groovy        |    3 +-
 .../org/grails/testing/GrailsUnitTest.groovy       |    6 +-
 grails-testing-support-datamapping/build.gradle    |    1 -
 grails-testing-support-http-client/README.md       |    3 +-
 grails-testing-support-http-client/build.gradle    |    6 +-
 .../testing/http/client/utils/XmlUtils.groovy      |   41 +-
 .../http/client/TestHttpResponseSpec.groovy        |   29 +-
 .../testing/http/client/utils/XmlUtilsSpec.groovy  |   37 +-
 grails-testing-support-mongodb/build.gradle        |    5 -
 .../testing/mongo/EmbeddedReplicaSetSpec.groovy    |  126 -
 grails-testing-support-redis/build.gradle          |    1 -
 grails-testing-support-views-gson/build.gradle     |    4 +-
 grails-testing-support-web/build.gradle            |    5 +-
 .../grails/testing/web/GrailsWebUnitTest.groovy    |    8 +-
 .../testing/spock/WebSetupSpecInterceptor.groovy   |    2 +-
 grails-undertow/plugin/build.gradle                |    3 -
 grails-url-mappings/build.gradle                   |    5 +-
 .../web/mapping/UrlMappingsAutoConfiguration.java  |  102 +
 .../UrlMappingsBeanDefinitionsPostProcessor.groovy |   43 +-
 .../web/mapping/UrlMappingsGrailsPlugin.groovy     |   80 +-
 .../UrlMappingsAutoConfigurationSpec.groovy        |   84 -
 .../web/mapping/UrlMappingsGrailsPluginSpec.groovy |   35 -
 grails-validation/build.gradle                     |    4 +-
 grails-views-core/build.gradle                     |    4 +-
 .../mvc/GenericGroovyTemplateViewResolver.groovy   |    4 +-
 .../views/mvc/renderer/DefaultViewRenderer.groovy  |    2 +-
 .../resolve/GenericGroovyTemplateResolver.groovy   |    2 +-
 grails-views-gson/build.gradle                     |   11 +-
 .../AbstractJsonViewContainerRenderer.groovy       |    2 +-
 .../plugin/json/view/JsonViewConfiguration.groovy  |    2 -
 .../plugin/json/view/JsonViewGrailsPlugin.groovy   |    9 +-
 .../plugin/json/view/api/HalViewHelper.groovy      |   12 +-
 .../view/api/internal/DefaultHalViewHelper.groovy  |   10 +-
 .../api/internal/DefaultJsonApiViewHelper.groovy   |    2 +-
 .../view/api/internal/DefaultJsonViewHelper.groovy |   34 +-
 .../plugin/json/view/test/JsonRenderResult.groovy  |    0
 .../plugin/json/view/test/JsonViewTest.groovy      |    0
 .../plugin/json/view/test/TestLinkGenerator.groovy |    0
 .../json/view/test/TestRequestConfigurer.groovy    |    0
 .../additional-spring-configuration-metadata.json  |  123 -
 .../META-INF/spring-configuration-metadata.json    |   67 +
 .../grails/plugin/json/view/ExpandSpec.groovy      |   18 +-
 .../grails/plugin/json/view/HalEmbeddedSpec.groovy |   52 +-
 .../json/view/IncludeAssociationsSpec.groovy       |    4 +-
 .../plugin/json/view/IterableRenderSpec.groovy     |   68 +-
 .../json/view/JsonViewGrailsPluginSpec.groovy      |   17 -
 .../json/view/JsonViewTemplateResolverSpec.groovy  |   30 +-
 .../grails/plugin/json/view/MapRenderSpec.groovy   |   31 +-
 .../plugin/json/view/NullRenderingSpec.groovy      |   26 +-
 .../json/view/TemplateInheritanceSpec.groovy       |    3 -
 .../view/api/JsonApiHandleAssociationsSpec.groovy  |    2 +-
 .../grails/plugin/json/view/api/JsonApiSpec.groovy |   22 +-
 .../plugin/json/view/api/PaginationSpec.groovy     |   11 +-
 .../view/api/handleassociations/Fixtures.groovy    |   29 -
 .../grails/plugin/json/view/expand/Fixtures.groovy |   46 -
 .../plugin/json/view/halembedded/Fixtures.groovy   |   62 -
 .../plugin/json/view/include/Fixtures.groovy       |   46 -
 .../plugin/json/view/iterable/Fixtures.groovy      |   46 -
 .../plugin/json/view/maprender/Fixtures.groovy     |   52 -
 .../plugin/json/view/nullrendering/Fixtures.groovy |   52 -
 grails-views-markup/build.gradle                   |    6 +-
 .../markup/view/MarkupViewGrailsPlugin.groovy      |    9 +-
 .../additional-spring-configuration-metadata.json  |  155 -
 grails-web-boot/build.gradle                       |    4 +-
 grails-web-common/build.gradle                     |   18 +-
 .../groovy/grails/util/GrailsWebMockUtil.groovy    |    0
 .../groovy/grails/web/api/ServletAttributes.groovy |    2 +-
 .../grails/web/servlet/mvc/GrailsHttpSession.java  |  141 +-
 .../grails/web/servlet/mvc/GrailsParameterMap.java |   48 +-
 .../web/errors/GrailsWrappedRuntimeException.java  |   10 +-
 .../i18n/ParamsAwareLocaleChangeInterceptor.groovy |    7 -
 .../web/json/PathCapturingJSONWriterWrapper.java   |   64 +-
 .../DefaultGrailsApplicationAttributes.java        |   55 +-
 .../org/grails/web/servlet/GrailsFlashScope.java   |    2 +-
 .../WebRequestDelegatingRequestContext.java        |    2 +-
 .../mvc/DefaultRequestStateLookupStrategy.java     |    5 +-
 .../grails/web/servlet/mvc/GrailsWebRequest.java   |  123 +-
 .../web/util/GrailsApplicationAttributes.java      |   15 -
 .../org/grails/web/util/HiddenHttpMethod.java      |  144 -
 .../main/groovy/org/grails/web/util/WebUtils.java  |  134 +-
 .../web/servlet/mvc/GrailsHttpSessionSpec.groovy   |   24 -
 .../web/servlet/mvc/GrailsParameterMapTests.groovy |  244 -
 .../grails/web/util/HiddenHttpMethodSpec.groovy    |  125 -
 .../groovy/org/grails/web/util/WebUtilsSpec.groovy |  130 -
 grails-web-core/build.gradle                       |   12 +-
 .../web/servlet/HttpServletRequestExtension.groovy |   44 -
 ...ata.json => spring-configuration-metadata.json} |   82 +
 .../servlet/HttpServletRequestExtensionSpec.groovy |   56 -
 grails-web-databinding/build.gradle                |    4 +-
 .../groovy/grails/web/databinding/BindAllowed.java |   30 -
 .../grails/web/databinding/DataBinder.groovy       |    8 +-
 .../grails/web/databinding/DataBindingUtils.java   |  587 +-
 .../web/databinding/GrailsWebDataBinder.groovy     |  415 +-
 .../web/databinding/MissingPropertyClearer.java    |  823 ---
 .../databinding/aot/DataBindingRuntimeHints.java   |   62 -
 .../DataBindingEventMulticastListener.groovy       |    4 -
 .../databinding/DefaultASTDatabindingHelper.java   |  107 +-
 ...tractRequestBodyDataBindingSourceCreator.groovy |    7 +-
 .../main/resources/META-INF/spring/aot.factories   |    2 -
 .../web/databinding/DataBindingUtilsSpec.groovy    |  272 -
 .../web/databinding/DenyByDefaultConfigSpec.groovy |  103 -
 ...tRequestBodyDataBindingSourceCreatorSpec.groovy |   45 +-
 .../XmlDataBindingSourceCreatorSpec.groovy         |   78 -
 grails-web-mvc/build.gradle                        |    6 +-
 .../grails/web/errors/GrailsExceptionResolver.java |  128 +-
 .../grails/web/filters/HiddenHttpMethodFilter.java |    8 +-
 .../web/servlet/mvc/GrailsDispatcherServlet.groovy |   34 +-
 .../web/servlet/mvc/GrailsWebRequestFilter.java    |   11 +-
 .../servlet/mvc/SynchronizerTokensHolder.groovy    |   90 +-
 .../web/errors/GrailsExceptionResolverSpec.groovy  |  274 +-
 .../GrailsDispatcherServletHiddenMethodSpec.groovy |  130 -
 .../servlet/mvc/GrailsDispatcherServletSpec.groovy |  136 -
 .../servlet/mvc/GrailsWebRequestFilterSpec.groovy  |  102 -
 grails-web-mvc/src/test/resources/logback-test.xml |   22 -
 grails-web-url-mappings/build.gradle               |   17 +-
 .../grails/web/mapping/ResponseRedirector.groovy   |    2 +-
 .../groovy/grails/web/mapping/UrlMappingInfo.java  |   21 -
 .../web/mapping/aot/UrlMappingRuntimeHints.java    |   61 -
 .../grails/web/mapping/AbstractUrlMappingInfo.java |   24 +-
 .../grails/web/mapping/DefaultLinkGenerator.groovy |    4 +-
 .../web/mapping/DefaultUrlMappingEvaluator.java    |   67 +-
 .../grails/web/mapping/DefaultUrlMappingInfo.java  |   71 +-
 .../web/mapping/DefaultUrlMappingsHolder.java      |   58 +-
 .../org/grails/web/mapping/RegexUrlMapping.java    |   91 +-
 .../web/mapping/RuntimeConstraintEvaluator.java    |   72 -
 .../mvc/AbstractGrailsControllerUrlMappings.groovy |    6 +-
 .../mvc/GrailsControllerUrlMappingInfo.groovy      |    3 -
 .../mapping/mvc/UrlMappingsHandlerMapping.groovy   |   79 +-
 .../mvc/UrlMappingsInfoHandlerAdapter.groovy       |   20 +-
 .../AnsiConsoleUrlMappingsRenderer.groovy          |   28 +-
 .../additional-spring-configuration-metadata.json  |   64 -
 .../main/resources/META-INF/spring/aot.factories   |    2 -
 .../web/mapping/RestfulResourceMappingSpec.groovy  |   36 +-
 .../mapping/WildcardResourcesMappingSpec.groovy    |  203 -
 .../EffectiveMethodLinkGenerationSpec.groovy       |   71 -
 .../mapping/RuntimeConstraintEvaluatorSpec.groovy  |  113 -
 .../web/mapping/UrlMappingSegmentFilterSpec.groovy |  105 -
 .../mapping/UrlMappingsWithHttpMethodSpec.groovy   |    1 +
 .../mvc/HiddenHttpMethodHandlerMappingSpec.groovy  |  317 -
 .../mvc/UrlMappingNameResolutionSpec.groovy        |  178 -
 .../mvc/UrlMappingsHandlerMappingSpec.groovy       |   61 -
 .../UrlMappingsInfoHandlerAdapterAsyncSpec.groovy  |   79 -
 .../AnsiConsoleUrlMappingsRendererSpec.groovy      |    3 -
 settings.gradle                                    |  136 +-
 threat-model.yaml                                  |   28 +-
 2807 files changed, 23512 insertions(+), 170383 deletions(-)
 delete mode 100644 .agents/skills/gradle-developer/SKILL.md
 rename .github/scripts/{groovy-snapshot-canary-build.init.gradle => groovy-joint-build.init.gradle} (92%)
 delete mode 100755 .github/scripts/ossIndexReport.sh
 delete mode 100755 .github/scripts/postStickyComment.sh
 delete mode 100644 .github/workflows/benchmark.yml
 delete mode 100644 .github/workflows/end-to-end.yml
 delete mode 100644 .github/workflows/forge-deploy-aws.yml
 create mode 100644 .github/workflows/forge-deploy-next.yml
 create mode 100644 .github/workflows/forge-deploy-prev-snapshot.yml
 create mode 100644 .github/workflows/forge-deploy-prev.yml
 create mode 100644 .github/workflows/forge-deploy-release.yml
 create mode 100644 .github/workflows/forge-deploy-snapshot.yml
 rename .github/workflows/{groovy-snapshot-canary.yml => groovy-joint-workflow.yml} (59%)
 delete mode 100644 .github/workflows/validate-actions.yml
 delete mode 100644 build-logic/docs-core/src/main/groovy/grails/doc/UserGuideBuilder.groovy
 delete mode 100644 build-logic/docs-core/src/main/groovy/grails/doc/gradle/PublishGuideWorkAction.groovy
 delete mode 100644 build-logic/docs-core/src/main/groovy/grails/doc/gradle/PublishGuideWorkParameters.groovy
 delete mode 100644 build-logic/docs-core/src/main/groovy/org/grails/doc/gradle/AuditGroovydocLinksTask.groovy
 delete mode 100644 build-logic/docs-core/src/main/groovy/org/grails/doc/gradle/GroovydocLinkAuditor.groovy
 delete mode 100644 build-logic/docs-core/src/test/groovy/grails/doc/GuideProbeMacro.groovy
 delete mode 100644 build-logic/docs-core/src/test/groovy/grails/doc/UserGuideBuilderSpec.groovy
 delete mode 100644 build-logic/docs-core/src/test/groovy/org/grails/doc/gradle/GroovydocLinkAuditorSpec.groovy
 delete mode 100644 build-logic/plugins/src/main/groovy/org/apache/grails/buildsrc/AutoConfigurationImportsPlugin.groovy
 delete mode 100644 build-logic/plugins/src/main/groovy/org/apache/grails/buildsrc/ConfigurationMetadataPlugin.groovy
 delete mode 100644 build-logic/plugins/src/main/groovy/org/apache/grails/buildsrc/GenerateAutoConfigurationImportsTask.groovy
 delete mode 100644 build-logic/plugins/src/main/groovy/org/apache/grails/buildsrc/GrailsValidateActionsPlugin.groovy
 delete mode 100644 build-logic/plugins/src/main/groovy/org/apache/grails/buildsrc/GroovyDslConfigurationMetadataParser.groovy
 delete mode 100644 build-logic/plugins/src/main/groovy/org/apache/grails/buildsrc/GroovydocRunner.groovy
 delete mode 100644 build-logic/plugins/src/main/groovy/org/apache/grails/buildsrc/TestTaskShardingPlugin.groovy
 delete mode 100644 build-logic/plugins/src/main/groovy/org/apache/grails/buildsrc/ValidateActionsTask.groovy
 delete mode 100644 build-logic/plugins/src/main/groovy/org/apache/grails/buildsrc/ValidateDependencyVersionsTask.groovy
 delete mode 100644 build-logic/plugins/src/main/groovy/org/apache/grails/buildsrc/ValidateProductionClasspathTask.groovy
 delete mode 100644 build-logic/plugins/src/main/resources/org/apache/grails/buildsrc/groovydoc-runner.groovy
 delete mode 100644 build-logic/plugins/src/test/groovy/org/apache/grails/buildsrc/CompilePluginSpec.groovy
 delete mode 100644 build-logic/plugins/src/test/groovy/org/apache/grails/buildsrc/ConfigurationMetadataPluginSpec.groovy
 delete mode 100644 build-logic/plugins/src/test/groovy/org/apache/grails/buildsrc/GenerateAutoConfigurationImportsTaskSpec.groovy
 delete mode 100644 build-logic/plugins/src/test/groovy/org/apache/grails/buildsrc/GroovydocEnhancerPluginSpec.groovy
 delete mode 100644 build-logic/plugins/src/test/groovy/org/apache/grails/buildsrc/PublishPluginSpec.groovy
 delete mode 100644 build-logic/plugins/src/test/groovy/org/apache/grails/buildsrc/SbomPluginSpec.groovy
 delete mode 100644 build-logic/plugins/src/test/groovy/org/apache/grails/buildsrc/TestTaskShardingPluginSpec.groovy
 delete mode 100644 end-to-end/README.md
 delete mode 100644 end-to-end/build.gradle
 delete mode 100644 end-to-end/gradle.properties
 delete mode 100644 end-to-end/gradle/test-config.gradle
 delete mode 100644 end-to-end/gradle/wrapper/gradle-wrapper.jar
 delete mode 100644 end-to-end/gradle/wrapper/gradle-wrapper.properties
 delete mode 100755 end-to-end/gradlew
 delete mode 100755 end-to-end/gradlew.bat
 delete mode 100644 end-to-end/legacy-commands-plugin/build.gradle
 delete mode 100644 end-to-end/legacy-commands-plugin/src/main/groovy/legacy/commands/plugin/HelloLegacyGrailsCommand.groovy
 delete mode 100644 end-to-end/legacy-commands-plugin/src/main/resources/META-INF/grails.factories
 delete mode 100644 end-to-end/legacy-commands-plugin/src/main/scripts/hello-legacy-script.groovy
 delete mode 100644 end-to-end/legacy-commands/build.gradle
 delete mode 100644 end-to-end/legacy-commands/grails-app/conf/logback.xml
 delete mode 100644 end-to-end/legacy-commands/grails-app/services/legacycommands/GreetingService.groovy
 delete mode 100644 end-to-end/legacy-commands/src/integration-test/groovy/legacycommands/LegacyCommandCompatibilityIntegrationSpec.groovy
 delete mode 100644 end-to-end/legacy-g7-command-plugin/.sdkmanrc
 delete mode 100644 end-to-end/legacy-g7-command-plugin/build.gradle
 delete mode 100644 end-to-end/legacy-g7-command-plugin/gradle/wrapper/gradle-wrapper.jar
 delete mode 100644 end-to-end/legacy-g7-command-plugin/gradle/wrapper/gradle-wrapper.properties
 delete mode 100755 end-to-end/legacy-g7-command-plugin/gradlew
 delete mode 100755 end-to-end/legacy-g7-command-plugin/gradlew.bat
 delete mode 100644 end-to-end/legacy-g7-command-plugin/src/main/groovy/legacy/g7/commands/HelloDerivedNameCommand.groovy
 delete mode 100644 end-to-end/legacy-g7-command-plugin/src/main/groovy/legacy/g7/commands/HelloG7PrecompiledCommand.groovy
 delete mode 100644 end-to-end/legacy-g7-command-plugin/src/main/groovy/legacy/g7/commands/HelloG7PrecompiledGrailsCommand.groovy
 delete mode 100644 end-to-end/legacy-g7-command-plugin/src/main/resources/META-INF/grails.factories
 delete mode 100644 end-to-end/settings.gradle
 delete mode 100644 end-to-end/taglib-index-incremental/build.gradle
 delete mode 100644 end-to-end/taglib-index-incremental/src/test/groovy/org/apache/grails/e2e/taglib/TagLibraryIndexIncrementalSpec.groovy
 delete mode 100644 grails-async/core/src/main/groovy/org/grails/async/factory/future/CompletableFuturePromise.groovy
 delete mode 100644 grails-async/core/src/main/groovy/org/grails/async/factory/future/CompletableFuturePromiseFactory.groovy
 delete mode 100644 grails-async/core/src/test/groovy/grails/async/CompletableFuturePromiseFactorySpec.groovy
 delete mode 100644 grails-async/core/src/test/groovy/grails/async/VirtualThreadPromiseFactorySpec.groovy
 delete mode 100644 grails-async/plugin/src/main/groovy/org/grails/plugins/web/async/AsyncRequestSupport.groovy
 delete mode 100644 grails-async/plugin/src/main/groovy/org/grails/plugins/web/async/GrailsWebRequestTaskDecorator.groovy
 delete mode 100644 grails-async/plugin/src/test/groovy/org/grails/plugins/web/async/AsyncWebRequestPromiseDecoratorLookupStrategySpec.groovy
 delete mode 100644 grails-async/plugin/src/test/groovy/org/grails/plugins/web/async/AsyncWebRequestPromiseDecoratorSpec.groovy
 delete mode 100644 grails-async/plugin/src/test/groovy/org/grails/plugins/web/async/GrailsWebRequestTaskDecoratorSpec.groovy
 delete mode 100644 grails-async/plugin/src/test/groovy/org/grails/plugins/web/async/mvc/AsyncActionResultTransformerSpec.groovy
 delete mode 100644 grails-beans-dsl/build.gradle
 delete mode 100644 grails-beans-dsl/src/main/java/grails/compiler/beans/ConditionalOnGrailsEnv.java
 delete mode 100644 grails-beans-dsl/src/main/java/grails/compiler/beans/GrailsBeans.java
 delete mode 100644 grails-beans-dsl/src/main/java/org/grails/compiler/beans/AutoConfigurationImportsWriter.java
 delete mode 100644 grails-beans-dsl/src/main/java/org/grails/compiler/beans/GrailsBeansASTTransformation.java
 delete mode 100644 grails-beans-dsl/src/main/java/org/grails/compiler/beans/OnGrailsEnvCondition.java
 delete mode 100644 grails-beans-dsl/src/test/groovy/org/grails/compiler/beans/AutoConfigurationImportsWriterSpec.groovy
 delete mode 100644 grails-beans-dsl/src/test/groovy/org/grails/compiler/beans/GrailsBeansASTTransformationSpec.groovy
 delete mode 100644 grails-beans-dsl/src/test/groovy/org/grails/compiler/beans/OnGrailsEnvConditionSpec.groovy
 copy grails-bom/{neo4j => hibernate5-micronaut}/build.gradle (69%)
 copy grails-bom/{neo4j => hibernate7-micronaut}/build.gradle (68%)
 rename grails-bom/{neo4j => micronaut}/build.gradle (70%)
 delete mode 100644 grails-bootstrap/src/cli/groovy/org/grails/build/logging/ConsoleAnsi.java
 rename grails-bootstrap/src/{cli => main}/groovy/grails/build/logging/ConsoleLogger.java (100%)
 rename grails-bootstrap/src/{cli => main}/groovy/grails/build/logging/GrailsConsole.java (82%)
 rename grails-bootstrap/src/{cli => main}/groovy/grails/build/logging/GrailsEclipseConsole.java (100%)
 rename grails-bootstrap/src/{cli => main}/groovy/org/grails/build/interactive/CandidateListCompletionHandler.java (100%)
 rename grails-bootstrap/src/{cli => main}/groovy/org/grails/build/logging/GrailsConsoleAntBuilder.java (100%)
 rename grails-bootstrap/src/{cli => main}/groovy/org/grails/build/logging/GrailsConsoleBuildListener.java (100%)
 rename grails-bootstrap/src/{cli => main}/groovy/org/grails/build/logging/GrailsConsoleErrorPrintStream.java (100%)
 rename grails-bootstrap/src/{cli => main}/groovy/org/grails/build/logging/GrailsConsolePrintStream.java (100%)
 delete mode 100644 grails-bootstrap/src/test-cli/groovy/grails/build/logging/GrailsConsoleLoggingSpec.groovy
 delete mode 100644 grails-bootstrap/src/test-cli/groovy/grails/build/logging/GrailsConsoleSpec.groovy
 rename grails-bootstrap/src/{test-cli => test}/groovy/grails/build/logging/GrailsConsoleCompleterSpec.groovy (100%)
 create mode 100644 grails-bootstrap/src/test/groovy/grails/build/logging/GrailsConsoleSpec.groovy
 rename grails-bootstrap/src/{test-cli => test}/groovy/org/grails/build/interactive/CandidateListCompletionHandlerSpec.groovy (100%)
 delete mode 100644 grails-bootstrap/src/test/groovy/org/grails/io/watch/DirectoryWatcherSpec.groovy
 create mode 100644 grails-cache/src/main/groovy/grails/plugin/cache/GrailsCacheAutoConfiguration.groovy
 rename grails-cache/src/main/resources/META-INF/{additional-spring-configuration-metadata.json => spring-configuration-metadata.json} (100%)
 create mode 100644 grails-cache/src/test/groovy/grails/plugin/cache/CacheGrailsPluginSpec.groovy
 rename grails-cache/src/test/groovy/grails/plugin/cache/{CacheAutoConfigurationSpec.groovy => GrailsCacheAutoConfigurationSpec.groovy} (53%)
 delete mode 100644 grails-codecs/src/test/groovy/org/grails/plugins/codecs/CodecsConfigurationSpec.groovy
 delete mode 100644 grails-common/src/main/groovy/org/apache/grails/common/aot/AheadOfTimeProcessing.java
 delete mode 100644 grails-common/src/main/groovy/org/apache/grails/common/aot/RegistrableTypes.java
 delete mode 100644 grails-common/src/main/groovy/org/apache/grails/common/reflect/ReflectionUtils.java
 delete mode 100644 grails-common/src/test/groovy/org/apache/grails/common/aot/RegistrableTypesSpec.groovy
 delete mode 100644 grails-common/src/test/groovy/org/apache/grails/common/reflect/ReflectionUtilsSpec.groovy
 delete mode 100644 grails-common/src/test/groovy/org/apache/grails/common/reflect/beans/PublicCovariantBase.java
 delete mode 100644 grails-common/src/test/groovy/org/apache/grails/common/reflect/beans/PublicThing.java
 delete mode 100644 grails-common/src/test/groovy/org/apache/grails/common/reflect/beans/ThingFactory.java
 delete mode 100644 grails-configuration-metadata/src/main/groovy/org/apache/grails/configuration/metadata/ConfigurationMetadataTransformation.groovy
 delete mode 100644 grails-configuration-metadata/src/main/resources/META-INF/services/org.codehaus.groovy.transform.ASTTransformation
 delete mode 100644 grails-configuration-metadata/src/test/groovy/org/apache/grails/configuration/metadata/ConfigurationMetadataTransformationSpec.groovy
 delete mode 100644 grails-controllers/src/main/groovy/org/apache/grails/controllers/aot/ControllerRuntimeHints.java
 delete mode 100644 grails-controllers/src/main/groovy/org/grails/plugins/web/controllers/GrailsControllersEnvironmentPostProcessor.java
 delete mode 100644 grails-controllers/src/main/groovy/org/grails/plugins/web/controllers/GrailsHiddenHttpMethodFilterAutoConfiguration.java
 delete mode 100644 grails-controllers/src/main/resources/META-INF/spring/aot.factories
 delete mode 100644 grails-controllers/src/test/groovy/grails/artefact/ControllerRedirectSpec.groovy
 delete mode 100644 grails-controllers/src/test/groovy/grails/artefact/controller/support/ResponseRendererSpec.groovy
 delete mode 100644 grails-controllers/src/test/groovy/org/apache/grails/controllers/aot/ControllerRuntimeHintsSpec.groovy
 delete mode 100644 grails-controllers/src/test/groovy/org/grails/compiler/web/ControllerActionTransformerSerializableParameterSpec.groovy
 delete mode 100644 grails-controllers/src/test/groovy/org/grails/plugins/web/controllers/GrailsControllersEnvironmentPostProcessorSpec.groovy
 delete mode 100644 grails-controllers/src/test/groovy/org/grails/plugins/web/controllers/GrailsHiddenHttpMethodFilterAutoConfigurationSpec.groovy
 delete mode 100644 grails-controllers/src/test/groovy/org/grails/plugins/web/controllers/api/ControllersDomainBindingApiSpec.groovy
 delete mode 100644 grails-converters/src/test/groovy/grails/converters/XMLParseSpec.groovy
 delete mode 100644 grails-converters/src/test/groovy/org/grails/web/converters/beans/DynamicGroovyPersonFactory.groovy
 delete mode 100644 grails-converters/src/test/groovy/org/grails/web/converters/beans/GroovyPersonFactory.groovy
 delete mode 100644 grails-converters/src/test/groovy/org/grails/web/converters/beans/HiddenCovariantBase.java
 delete mode 100644 grails-converters/src/test/groovy/org/grails/web/converters/beans/HiddenCovariantJavaBean.java
 delete mode 100644 grails-converters/src/test/groovy/org/grails/web/converters/beans/JavaPersonFactory.java
 delete mode 100644 grails-converters/src/test/groovy/org/grails/web/converters/beans/PackagePrivateStandaloneGroovyBean.groovy
 delete mode 100644 grails-converters/src/test/groovy/org/grails/web/converters/beans/PackagePrivateStandaloneJavaBean.java
 delete mode 100644 grails-converters/src/test/groovy/org/grails/web/converters/beans/PublicPerson.java
 delete mode 100644 grails-converters/src/test/groovy/org/grails/web/converters/marshaller/json/NonPublicClassMarshallingSpec.groovy
 delete mode 100644 grails-converters/src/test/groovy/org/grails/web/converters/marshaller/xml/NonPublicClassMarshallingSpec.groovy
 delete mode 100644 grails-core-cli-legacy/build.gradle
 delete mode 100644 grails-core-cli-legacy/src/main/groovy/grails/dev/commands/ApplicationCommand.groovy
 delete mode 100644 grails-core-cli-legacy/src/main/groovy/grails/dev/commands/ExecutionContext.groovy
 delete mode 100644 grails-core-cli-legacy/src/main/groovy/grails/dev/commands/GrailsApplicationCommand.groovy
 delete mode 100644 grails-core-cli-legacy/src/main/groovy/grails/dev/commands/io/FileSystemInteraction.groovy
 delete mode 100644 grails-core-cli-legacy/src/main/groovy/grails/dev/commands/io/FileSystemInteractionImpl.groovy
 delete mode 100644 grails-core-cli-legacy/src/main/groovy/grails/dev/commands/template/TemplateException.groovy
 delete mode 100644 grails-core-cli-legacy/src/main/groovy/grails/dev/commands/template/TemplateRenderer.groovy
 delete mode 100644 grails-core-cli-legacy/src/main/groovy/grails/dev/commands/template/TemplateRendererImpl.groovy
 delete mode 100644 grails-core-cli-legacy/src/main/groovy/org/apache/grails/core/cli/compat/LegacyApplicationCommandAdapter.groovy
 delete mode 100644 grails-core-cli-legacy/src/main/groovy/org/apache/grails/core/cli/compat/LegacyApplicationCommandProvider.groovy
 delete mode 100644 grails-core-cli-legacy/src/test/groovy/org/apache/grails/core/cli/LegacyCommandRegistryLoadingSpec.groovy
 delete mode 100644 grails-core-cli-legacy/src/test/groovy/org/apache/grails/core/cli/compat/LegacyApplicationCommandAdapterSpec.groovy
 delete mode 100644 grails-core/src/cli/groovy/org/apache/grails/core/cli/ApplicationCommandDiagnostics.groovy
 delete mode 100644 grails-core/src/cli/groovy/org/apache/grails/core/cli/ApplicationCommandProvider.groovy
 delete mode 100644 grails-core/src/cli/groovy/org/apache/grails/core/cli/ApplicationCommandRegistrar.groovy
 delete mode 100644 grails-core/src/cli/groovy/org/apache/grails/core/cli/ApplicationCommandTargetAware.groovy
 delete mode 100644 grails-core/src/main/groovy/org/apache/grails/core/aot/AbstractBeanDefinitionExcludeFilter.java
 delete mode 100644 grails-core/src/main/groovy/org/apache/grails/core/aot/ArtefactClassesBeanFactoryInitializationAotProcessor.java
 delete mode 100644 grails-core/src/main/groovy/org/apache/grails/core/aot/AutowireModeBeanRegistrationAotProcessor.java
 delete mode 100644 grails-core/src/main/groovy/org/apache/grails/core/aot/BeanRegistrarRuntimeHints.java
 delete mode 100644 grails-core/src/main/groovy/org/apache/grails/core/aot/GrailsApiRuntimeHints.java
 delete mode 100644 grails-core/src/main/groovy/org/apache/grails/core/aot/GrailsBannerRuntimeHints.java
 delete mode 100644 grails-core/src/main/groovy/org/apache/grails/core/aot/GrailsClosureRuntimeHints.java
 delete mode 100644 grails-core/src/main/groovy/org/apache/grails/core/aot/GrailsResourceRuntimeHints.java
 delete mode 100644 grails-core/src/main/groovy/org/apache/grails/core/aot/GroovyExtensionModuleRuntimeHints.java
 delete mode 100644 grails-core/src/main/groovy/org/apache/grails/core/aot/VarargsBeanRegistrationAotProcessor.java
 rename grails-core/src/{testFixtures/java => main/groovy}/org/grails/core/io/MockFileResource.java (100%)
 rename grails-core/src/{testFixtures/java => main/groovy}/org/grails/core/io/MockResourceLoader.java (100%)
 rename grails-core/src/{testFixtures/java => main/groovy}/org/grails/core/io/MockStringResourceLoader.java (100%)
 rename grails-core/src/{testFixtures/java => main/groovy}/org/grails/plugins/MockGrailsPluginManager.java (100%)
 rename grails-core/src/{testFixtures/java => main/groovy}/org/grails/plugins/MockPluginDiscovery.java (100%)
 create mode 100644 grails-core/src/main/groovy/org/grails/plugins/core/CoreAutoConfiguration.java
 delete mode 100644 grails-core/src/main/groovy/org/grails/spring/aop/autoproxy/GroovyAwareAutoProxyCreators.java
 delete mode 100644 grails-core/src/main/groovy/org/grails/spring/beans/AbstractResourceLocatorPostProcessor.java
 delete mode 100644 grails-core/src/main/groovy/org/grails/spring/context/annotation/GrailsComponentScanPostProcessor.java
 create mode 100644 grails-core/src/main/groovy/org/grails/spring/context/support/PluginAwareResourceBundleMessageSource.java
 create mode 100644 grails-core/src/main/groovy/org/grails/spring/context/support/ReloadableResourceBundleMessageSource.java
 delete mode 100644 grails-core/src/main/resources/META-INF/native-image/org.apache.grails/grails-core/native-image.properties
 copy grails-core/src/main/resources/META-INF/{additional-spring-configuration-metadata.json => spring-configuration-metadata.json} (67%)
 delete mode 100644 grails-core/src/main/resources/META-INF/spring/aot.factories
 delete mode 100644 grails-core/src/test-cli/groovy/org/apache/grails/core/cli/ApplicationCommandProviderSpec.groovy
 delete mode 100644 grails-core/src/test/groovy/grails/boot/GrailsBannerColourSpec.groovy
 delete mode 100644 grails-core/src/test/groovy/grails/boot/GrailsBannerNativeMarkSpec.groovy
 delete mode 100644 grails-core/src/test/groovy/grails/boot/GrailsBannerVersionLookupSpec.groovy
 delete mode 100644 grails-core/src/test/groovy/grails/boot/config/GrailsApplicationPostProcessorAnnotationConfigSpec.groovy
 delete mode 100644 grails-core/src/test/groovy/grails/boot/config/GrailsAutoConfigurationArtefactsSpec.groovy
 delete mode 100644 grails-core/src/test/groovy/grails/plugins/DefaultGrailsPluginManagerRegistryContractSpec.groovy
 create mode 100644 grails-core/src/test/groovy/grails/spring/GrailsPlaceHolderConfigurerCorePluginRuntimeSpec.groovy
 delete mode 100644 grails-core/src/test/groovy/grails/util/ActiveProcessorCountForkTests.java
 delete mode 100644 grails-core/src/test/groovy/grails/util/GrailsUtilStackFiltererSpec.groovy
 delete mode 100644 grails-core/src/test/groovy/org/apache/grails/core/GrailsBootstrapRegistryInitializerSpec.groovy
 delete mode 100644 grails-core/src/test/groovy/org/apache/grails/core/aot/AbstractBeanDefinitionExcludeFilterSpec.groovy
 delete mode 100644 grails-core/src/test/groovy/org/apache/grails/core/aot/ArtefactClassesBeanFactoryInitializationAotProcessorSpec.groovy
 delete mode 100644 grails-core/src/test/groovy/org/apache/grails/core/aot/AutowireModeBeanRegistrationAotProcessorSpec.groovy
 delete mode 100644 grails-core/src/test/groovy/org/apache/grails/core/aot/BeanRegistrarRuntimeHintsSpec.groovy
 delete mode 100644 grails-core/src/test/groovy/org/apache/grails/core/aot/GrailsApiRuntimeHintsSpec.groovy
 delete mode 100644 grails-core/src/test/groovy/org/apache/grails/core/aot/GrailsBannerRuntimeHintsSpec.groovy
 delete mode 100644 grails-core/src/test/groovy/org/apache/grails/core/aot/GrailsClosureRuntimeHintsSpec.groovy
 delete mode 100644 grails-core/src/test/groovy/org/apache/grails/core/aot/GrailsResourceRuntimeHintsSpec.groovy
 delete mode 100644 grails-core/src/test/groovy/org/apache/grails/core/aot/GroovyExtensionModuleRuntimeHintsSpec.groovy
 delete mode 100644 grails-core/src/test/groovy/org/apache/grails/core/aot/VarargsBeanRegistrationAotProcessorSpec.groovy
 rename grails-core/src/{test-cli => test}/groovy/org/apache/grails/core/cli/ConfigReportCommandSpec.groovy (100%)
 rename grails-core/src/{test-cli => test}/groovy/org/apache/grails/core/cli/compiler/CommandFactoriesTransformationSpec.groovy (82%)
 delete mode 100644 grails-core/src/test/groovy/org/grails/plugins/CoreAutoConfigurationSpec.groovy
 delete mode 100644 grails-core/src/test/groovy/org/grails/plugins/CoreGrailsPluginAotSpec.groovy
 delete mode 100644 grails-core/src/test/groovy/org/grails/plugins/CoreGrailsPluginRegistrarSpec.groovy
 delete mode 100644 grails-core/src/test/groovy/org/grails/plugins/ProfilingGrailsPluginManagerSpec.groovy
 delete mode 100644 grails-core/src/test/groovy/org/grails/plugins/SpringBeanPackagesSpec.groovy
 delete mode 100644 grails-core/src/test/groovy/org/grails/spring/aop/autoproxy/GroovyAwareAutoProxyCreatorsSpec.groovy
 delete mode 100644 grails-core/src/test/groovy/org/grails/spring/beans/AbstractResourceLocatorPostProcessorSpec.groovy
 create mode 100644 grails-core/src/test/groovy/org/grails/spring/context/ResourceBundleMessageSourceSpec.groovy
 delete mode 100644 grails-core/src/test/groovy/org/grails/transaction/GrailsTransactionAttributeSpec.groovy
 delete mode 100644 grails-core/src/test/resources/grails/boot/version-in-a-resource.properties
 delete mode 100644 grails-core/src/test/resources/logback-test.xml
 delete mode 100644 grails-core/src/testFixtures/groovy/org/apache/grails/core/testing/support/LogCapture.groovy
 rename grails-data-graphql/core/src/{testFixtures => main}/groovy/org/grails/gorm/graphql/testing/GraphQLSchemaSpec.groovy (100%)
 rename grails-data-graphql/core/src/{testFixtures => main}/groovy/org/grails/gorm/graphql/testing/MockDataFetchingEnvironment.groovy (100%)
 create mode 100644 grails-data-graphql/core/src/test/groovy/org/grails/gorm/graphql/MongoSchemaSpec.groovy.disabled
 delete mode 100644 grails-data-graphql/core/src/test/groovy/org/grails/gorm/graphql/binding/DataBinderNotFoundExceptionSpec.groovy
 delete mode 100644 grails-data-graphql/core/src/test/groovy/org/grails/gorm/graphql/entity/EntityFetchOptionsSpec.groovy
 delete mode 100644 grails-data-graphql/core/src/test/groovy/org/grails/gorm/graphql/entity/arguments/SimpleArgumentSpec.groovy
 delete mode 100644 grails-data-graphql/core/src/test/groovy/org/grails/gorm/graphql/entity/dsl/helpers/ComplexTypedSpec.groovy
 delete mode 100644 grails-data-graphql/core/src/test/groovy/org/grails/gorm/graphql/fetcher/DataFetcherNotFoundExceptionSpec.groovy
 delete mode 100644 grails-data-graphql/core/src/test/groovy/org/grails/gorm/graphql/fetcher/impl/ClosureDataFetchingEnvironmentSpec.groovy
 delete mode 100644 grails-data-graphql/core/src/test/groovy/org/grails/gorm/graphql/fetcher/impl/CountEntityDataFetcherSpec.groovy
 delete mode 100644 grails-data-graphql/core/src/test/groovy/org/grails/gorm/graphql/fetcher/impl/PaginatedEntityDataFetcherSpec.groovy
 delete mode 100644 grails-data-graphql/core/src/test/groovy/org/grails/gorm/graphql/fetcher/impl/PersistentPropertyDataFetcherSpec.groovy
 delete mode 100644 grails-data-graphql/core/src/test/groovy/org/grails/gorm/graphql/fetcher/interceptor/CustomMutationInterceptorInvokerSpec.groovy
 delete mode 100644 grails-data-graphql/core/src/test/groovy/org/grails/gorm/graphql/fetcher/interceptor/CustomQueryInterceptorInvokerSpec.groovy
 delete mode 100644 grails-data-graphql/core/src/test/groovy/org/grails/gorm/graphql/response/CachingGraphQLResponseHandlerSpec.groovy
 delete mode 100644 grails-data-graphql/core/src/test/groovy/org/grails/gorm/graphql/types/KeyClassQuerySpec.groovy
 delete mode 100644 grails-data-graphql/core/src/test/groovy/org/grails/gorm/graphql/types/scalars/coercing/CurrencyCoercionSpec.groovy
 delete mode 100644 grails-data-graphql/core/src/test/groovy/org/grails/gorm/graphql/types/scalars/coercing/DateCoercionSpec.groovy
 delete mode 100644 grails-data-graphql/core/src/test/groovy/org/grails/gorm/graphql/types/scalars/coercing/SqlDateCoercionSpec.groovy
 delete mode 100644 grails-data-graphql/core/src/test/groovy/org/grails/gorm/graphql/types/scalars/coercing/TimeCoercionSpec.groovy
 delete mode 100644 grails-data-graphql/core/src/test/groovy/org/grails/gorm/graphql/types/scalars/coercing/TimeZoneCoercionSpec.groovy
 delete mode 100644 grails-data-graphql/core/src/test/groovy/org/grails/gorm/graphql/types/scalars/coercing/TimestampCoercionSpec.groovy
 delete mode 100644 grails-data-graphql/core/src/test/groovy/org/grails/gorm/graphql/types/scalars/coercing/URICoercionSpec.groovy
 delete mode 100644 grails-data-graphql/core/src/test/groovy/org/grails/gorm/graphql/types/scalars/coercing/URLCoercionSpec.groovy
 delete mode 100644 grails-data-graphql/core/src/test/groovy/org/grails/gorm/graphql/types/scalars/coercing/UUIDCoercionSpec.groovy
 delete mode 100644 grails-data-graphql/core/src/test/groovy/org/grails/gorm/graphql/types/scalars/coercing/jsr310/InstantCoercionSpec.groovy
 delete mode 100644 grails-data-graphql/core/src/test/groovy/org/grails/gorm/graphql/types/scalars/coercing/jsr310/LocalDateCoercionSpec.groovy
 delete mode 100644 grails-data-graphql/core/src/test/groovy/org/grails/gorm/graphql/types/scalars/coercing/jsr310/LocalDateTimeCoercionSpec.groovy
 delete mode 100644 grails-data-graphql/core/src/test/groovy/org/grails/gorm/graphql/types/scalars/coercing/jsr310/LocalTimeCoercionSpec.groovy
 delete mode 100644 grails-data-graphql/core/src/test/groovy/org/grails/gorm/graphql/types/scalars/coercing/jsr310/OffsetDateTimeCoercionSpec.groovy
 delete mode 100644 grails-data-graphql/core/src/test/groovy/org/grails/gorm/graphql/types/scalars/coercing/jsr310/OffsetTimeCoercionSpec.groovy
 delete mode 100644 grails-data-graphql/core/src/test/groovy/org/grails/gorm/graphql/types/scalars/coercing/jsr310/ZonedDateTimeCoercionSpec.groovy
 rename grails-data-hibernate5/core/src/main/resources/META-INF/{additional-spring-configuration-metadata.json => spring-configuration-metadata.json} (100%)
 delete mode 100644 grails-data-hibernate5/core/src/test/groovy/grails/gorm/tests/Hibernate5JoinedLockDialectSpec.groovy
 delete mode 100644 grails-data-hibernate5/core/src/test/groovy/grails/gorm/tests/Hibernate5RefreshLockSpec.groovy
 delete mode 100644 grails-data-hibernate5/core/src/test/groovy/grails/gorm/tests/SortArgumentValidationSpec.groovy
 delete mode 100644 grails-data-hibernate5/core/src/test/groovy/org/grails/orm/hibernate/cfg/HibernateMappingContextConfigurationSpec.groovy
 rename grails-data-hibernate5/dbmigration/src/{integration-test-cli => integration-test}/groovy/org/grails/plugins/databasemigration/DbUpdateCommandSpec.groovy (100%)
 rename grails-data-hibernate5/dbmigration/src/main/resources/META-INF/{additional-spring-configuration-metadata.json => spring-configuration-metadata.json} (100%)
 rename grails-data-hibernate5/dbmigration/src/{test-cli => test}/groovy/org/apache/grails/data/hibernate5/dbmigration/cli/ApplicationContextDatabaseMigrationCommandSpec.groovy (96%)
 rename grails-data-hibernate5/dbmigration/src/{test-cli => test}/groovy/org/apache/grails/data/hibernate5/dbmigration/cli/DatabaseMigrationCommandConfigSpec.groovy (100%)
 rename grails-data-hibernate5/dbmigration/src/{test-cli => test}/groovy/org/apache/grails/data/hibernate5/dbmigration/cli/DatabaseMigrationCommandSpec.groovy (100%)
 rename grails-data-hibernate5/dbmigration/src/{test-cli => test}/groovy/org/apache/grails/data/hibernate5/dbmigration/cli/DbmChangelogSyncCommandSpec.groovy (100%)
 rename grails-data-hibernate5/dbmigration/src/{test-cli => test}/groovy/org/apache/grails/data/hibernate5/dbmigration/cli/DbmChangelogSyncCommandSqlSpec.groovy (100%)
 rename grails-data-hibernate5/dbmigration/src/{test-cli => test}/groovy/org/apache/grails/data/hibernate5/dbmigration/cli/DbmClearChecksumsCommandSpec.groovy (100%)
 rename grails-data-hibernate5/dbmigration/src/{test-cli => test}/groovy/org/apache/grails/data/hibernate5/dbmigration/cli/DbmDiffCommandSpec.groovy (100%)
 rename grails-data-hibernate5/dbmigration/src/{test-cli => test}/groovy/org/apache/grails/data/hibernate5/dbmigration/cli/DbmDropAllCommandSpec.groovy (100%)
 rename grails-data-hibernate5/dbmigration/src/{test-cli => test}/groovy/org/apache/grails/data/hibernate5/dbmigration/cli/DbmFutureRollbackCountSqlCommandSpec.groovy (100%)
 rename grails-data-hibernate5/dbmigration/src/{test-cli => test}/groovy/org/apache/grails/data/hibernate5/dbmigration/cli/DbmFutureRollbackSqlCommandSpec.groovy (100%)
 rename grails-data-hibernate5/dbmigration/src/{test-cli => test}/groovy/org/apache/grails/data/hibernate5/dbmigration/cli/DbmGenerateChangelogCommandSpec.groovy (100%)
 rename grails-data-hibernate5/dbmigration/src/{test-cli => test}/groovy/org/apache/grails/data/hibernate5/dbmigration/cli/DbmGenerateGormChangelogCommandSpec.groovy (100%)
 rename grails-data-hibernate5/dbmigration/src/{test-cli => test}/groovy/org/apache/grails/data/hibernate5/dbmigration/cli/DbmGormDiffCommandSpec.groovy (100%)
 rename grails-data-hibernate5/dbmigration/src/{test-cli => test}/groovy/org/apache/grails/data/hibernate5/dbmigration/cli/DbmListLocksCommandSpec.groovy (100%)
 rename grails-data-hibernate5/dbmigration/src/{test-cli => test}/groovy/org/apache/grails/data/hibernate5/dbmigration/cli/DbmMarkNextChangesetRanCommandSpec.groovy (100%)
 rename grails-data-hibernate5/dbmigration/src/{test-cli => test}/groovy/org/apache/grails/data/hibernate5/dbmigration/cli/DbmMarkNextChangesetRanSqlCommandSpec.groovy (100%)
 rename grails-data-hibernate5/dbmigration/src/{test-cli => test}/groovy/org/apache/grails/data/hibernate5/dbmigration/cli/DbmPreviousChangesetSqlCommandSpec.groovy (100%)
 rename grails-data-hibernate5/dbmigration/src/{test-cli => test}/groovy/org/apache/grails/data/hibernate5/dbmigration/cli/DbmReleaseLocksCommandSpec.groovy (100%)
 rename grails-data-hibernate5/dbmigration/src/{test-cli => test}/groovy/org/apache/grails/data/hibernate5/dbmigration/cli/DbmRollbackCommandSpec.groovy (100%)
 rename grails-data-hibernate5/dbmigration/src/{test-cli => test}/groovy/org/apache/grails/data/hibernate5/dbmigration/cli/DbmRollbackCountCommandSpec.groovy (100%)
 rename grails-data-hibernate5/dbmigration/src/{test-cli => test}/groovy/org/apache/grails/data/hibernate5/dbmigration/cli/DbmRollbackCountSqlCommandSpec.groovy (100%)
 rename grails-data-hibernate5/dbmigration/src/{test-cli => test}/groovy/org/apache/grails/data/hibernate5/dbmigration/cli/DbmRollbackSqlCommandSpec.groovy (100%)
 rename grails-data-hibernate5/dbmigration/src/{test-cli => test}/groovy/org/apache/grails/data/hibernate5/dbmigration/cli/DbmRollbackToDateCommandSpec.groovy (100%)
 rename grails-data-hibernate5/dbmigration/src/{test-cli => test}/groovy/org/apache/grails/data/hibernate5/dbmigration/cli/DbmRollbackToDateSqlCommandSpec.groovy (100%)
 rename grails-data-hibernate5/dbmigration/src/{test-cli => test}/groovy/org/apache/grails/data/hibernate5/dbmigration/cli/DbmStatusCommandSpec.groovy (100%)
 rename grails-data-hibernate5/dbmigration/src/{test-cli => test}/groovy/org/apache/grails/data/hibernate5/dbmigration/cli/DbmUpdateCommandSpec.groovy (100%)
 rename grails-data-hibernate5/dbmigration/src/{test-cli => test}/groovy/org/apache/grails/data/hibernate5/dbmigration/cli/DbmUpdateCountCommandSpec.groovy (100%)
 rename grails-data-hibernate5/dbmigration/src/{test-cli => test}/groovy/org/apache/grails/data/hibernate5/dbmigration/cli/DbmUpdateCountSqlCommandSpec.groovy (100%)
 rename grails-data-hibernate5/dbmigration/src/{test-cli => test}/groovy/org/apache/grails/data/hibernate5/dbmigration/cli/DbmUpdateSqlCommandSpec.groovy (100%)
 rename grails-data-hibernate5/dbmigration/src/{test-cli => test}/groovy/org/apache/grails/data/hibernate5/dbmigration/cli/DbmValidateCommandSpec.groovy (100%)
 rename grails-data-hibernate5/dbmigration/src/{test-cli => test}/groovy/org/apache/grails/data/hibernate5/dbmigration/cli/ScriptDatabaseMigrationCommandSpec.groovy (100%)
 rename grails-data-hibernate5/dbmigration/src/{test-cli => test}/groovy/org/grails/plugins/databasemigration/liquibase/GroovyChangeLogSpec.groovy (100%)
 rename grails-data-hibernate5/dbmigration/src/{test-cli => test}/groovy/org/grails/plugins/databasemigration/liquibase/GroovyPreconditionSpec.groovy (100%)
 delete mode 100644 grails-data-hibernate5/grails-plugin/src/test-cli/groovy/grails/plugin/hibernate/commands/SchemaExportCommandSpec.groovy
 delete mode 100644 grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/hibernate/HibernateBasicEnumProperty.java
 rename grails-data-hibernate7/core/src/main/resources/META-INF/{additional-spring-configuration-metadata.json => spring-configuration-metadata.json} (100%)
 delete mode 100644 grails-data-hibernate7/core/src/test/groovy/grails/gorm/tests/EnumHasManyDdlSpec.groovy
 delete mode 100644 grails-data-hibernate7/core/src/test/groovy/grails/gorm/tests/Hibernate7RefreshLockSpec.groovy
 delete mode 100644 grails-data-hibernate7/core/src/test/groovy/grails/gorm/tests/Issue16349Spec.groovy
 delete mode 100644 grails-data-hibernate7/core/src/test/groovy/grails/gorm/tests/SortArgumentValidationSpec.groovy
 delete mode 100644 grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/GormNumericTypeColumnIntegrationSpec.groovy
 delete mode 100644 grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/GormNumericTypeColumnPrecisionSpec.groovy
 delete mode 100644 grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/GormTextTypeColumnIntegrationSpec.groovy
 delete mode 100644 grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/GormTextTypeColumnLengthSpec.groovy
 rename grails-data-hibernate7/dbmigration/src/{integration-test-cli => integration-test}/groovy/org/grails/plugins/databasemigration/DbUpdateCommandSpec.groovy (100%)
 rename grails-data-hibernate7/dbmigration/src/main/resources/META-INF/{additional-spring-configuration-metadata.json => spring-configuration-metadata.json} (100%)
 rename grails-data-hibernate7/dbmigration/src/{test-cli => test}/groovy/org/apache/grails/data/hibernate7/dbmigration/cli/ApplicationContextDatabaseMigrationCommandSpec.groovy (98%)
 rename grails-data-hibernate7/dbmigration/src/{test-cli => test}/groovy/org/apache/grails/data/hibernate7/dbmigration/cli/DatabaseMigrationCommandConfigSpec.groovy (100%)
 rename grails-data-hibernate7/dbmigration/src/{test-cli => test}/groovy/org/apache/grails/data/hibernate7/dbmigration/cli/DatabaseMigrationCommandSpec.groovy (100%)
 rename grails-data-hibernate7/dbmigration/src/{test-cli => test}/groovy/org/apache/grails/data/hibernate7/dbmigration/cli/DbmChangelogSyncCommandSpec.groovy (100%)
 rename grails-data-hibernate7/dbmigration/src/{test-cli => test}/groovy/org/apache/grails/data/hibernate7/dbmigration/cli/DbmChangelogSyncCommandSqlSpec.groovy (100%)
 rename grails-data-hibernate7/dbmigration/src/{test-cli => test}/groovy/org/apache/grails/data/hibernate7/dbmigration/cli/DbmClearChecksumsCommandSpec.groovy (100%)
 rename grails-data-hibernate7/dbmigration/src/{test-cli => test}/groovy/org/apache/grails/data/hibernate7/dbmigration/cli/DbmDiffCommandSpec.groovy (100%)
 rename grails-data-hibernate7/dbmigration/src/{test-cli => test}/groovy/org/apache/grails/data/hibernate7/dbmigration/cli/DbmDropAllCommandSpec.groovy (100%)
 rename grails-data-hibernate7/dbmigration/src/{test-cli => test}/groovy/org/apache/grails/data/hibernate7/dbmigration/cli/DbmFutureRollbackCountSqlCommandSpec.groovy (100%)
 rename grails-data-hibernate7/dbmigration/src/{test-cli => test}/groovy/org/apache/grails/data/hibernate7/dbmigration/cli/DbmFutureRollbackSqlCommandSpec.groovy (100%)
 rename grails-data-hibernate7/dbmigration/src/{test-cli => test}/groovy/org/apache/grails/data/hibernate7/dbmigration/cli/DbmGenerateChangelogCommandSpec.groovy (100%)
 rename grails-data-hibernate7/dbmigration/src/{test-cli => test}/groovy/org/apache/grails/data/hibernate7/dbmigration/cli/DbmGenerateGormChangelogCommandSpec.groovy (100%)
 rename grails-data-hibernate7/dbmigration/src/{test-cli => test}/groovy/org/apache/grails/data/hibernate7/dbmigration/cli/DbmGormDiffCommandSpec.groovy (100%)
 rename grails-data-hibernate7/dbmigration/src/{test-cli => test}/groovy/org/apache/grails/data/hibernate7/dbmigration/cli/DbmListLocksCommandSpec.groovy (100%)
 rename grails-data-hibernate7/dbmigration/src/{test-cli => test}/groovy/org/apache/grails/data/hibernate7/dbmigration/cli/DbmMarkNextChangesetRanCommandSpec.groovy (100%)
 rename grails-data-hibernate7/dbmigration/src/{test-cli => test}/groovy/org/apache/grails/data/hibernate7/dbmigration/cli/DbmMarkNextChangesetRanSqlCommandSpec.groovy (100%)
 rename grails-data-hibernate7/dbmigration/src/{test-cli => test}/groovy/org/apache/grails/data/hibernate7/dbmigration/cli/DbmPreviousChangesetSqlCommandSpec.groovy (100%)
 rename grails-data-hibernate7/dbmigration/src/{test-cli => test}/groovy/org/apache/grails/data/hibernate7/dbmigration/cli/DbmReleaseLocksCommandSpec.groovy (100%)
 rename grails-data-hibernate7/dbmigration/src/{test-cli => test}/groovy/org/apache/grails/data/hibernate7/dbmigration/cli/DbmRollbackCommandSpec.groovy (100%)
 rename grails-data-hibernate7/dbmigration/src/{test-cli => test}/groovy/org/apache/grails/data/hibernate7/dbmigration/cli/DbmRollbackCountCommandSpec.groovy (100%)
 rename grails-data-hibernate7/dbmigration/src/{test-cli => test}/groovy/org/apache/grails/data/hibernate7/dbmigration/cli/DbmRollbackCountSqlCommandSpec.groovy (100%)
 rename grails-data-hibernate7/dbmigration/src/{test-cli => test}/groovy/org/apache/grails/data/hibernate7/dbmigration/cli/DbmRollbackSqlCommandSpec.groovy (100%)
 rename grails-data-hibernate7/dbmigration/src/{test-cli => test}/groovy/org/apache/grails/data/hibernate7/dbmigration/cli/DbmRollbackToDateCommandSpec.groovy (100%)
 rename grails-data-hibernate7/dbmigration/src/{test-cli => test}/groovy/org/apache/grails/data/hibernate7/dbmigration/cli/DbmRollbackToDateSqlCommandSpec.groovy (100%)
 rename grails-data-hibernate7/dbmigration/src/{test-cli => test}/groovy/org/apache/grails/data/hibernate7/dbmigration/cli/DbmStatusCommandSpec.groovy (100%)
 rename grails-data-hibernate7/dbmigration/src/{test-cli => test}/groovy/org/apache/grails/data/hibernate7/dbmigration/cli/DbmUpdateCommandSpec.groovy (100%)
 rename grails-data-hibernate7/dbmigration/src/{test-cli => test}/groovy/org/apache/grails/data/hibernate7/dbmigration/cli/DbmUpdateCountCommandSpec.groovy (100%)
 rename grails-data-hibernate7/dbmigration/src/{test-cli => test}/groovy/org/apache/grails/data/hibernate7/dbmigration/cli/DbmUpdateCountSqlCommandSpec.groovy (100%)
 rename grails-data-hibernate7/dbmigration/src/{test-cli => test}/groovy/org/apache/grails/data/hibernate7/dbmigration/cli/DbmUpdateSqlCommandSpec.groovy (100%)
 rename grails-data-hibernate7/dbmigration/src/{test-cli => test}/groovy/org/apache/grails/data/hibernate7/dbmigration/cli/DbmValidateCommandSpec.groovy (100%)
 rename grails-data-hibernate7/dbmigration/src/{test-cli => test}/groovy/org/apache/grails/data/hibernate7/dbmigration/cli/ScriptDatabaseMigrationCommandSpec.groovy (100%)
 rename grails-data-hibernate7/dbmigration/src/{test-cli => test}/groovy/org/grails/plugins/databasemigration/liquibase/GroovyChangeLogSpec.groovy (100%)
 rename grails-data-hibernate7/dbmigration/src/{test-cli => test}/groovy/org/grails/plugins/databasemigration/liquibase/GroovyPreconditionSpec.groovy (100%)
 delete mode 100644 grails-data-hibernate7/grails-plugin/src/test-cli/groovy/grails/plugin/hibernate/commands/SchemaExportCommandSpec.groovy
 delete mode 100644 grails-data-mongodb/bson/src/test/groovy/org/grails/datastore/bson/codecs/CodecCustomTypeMarshallerSpec.groovy
 delete mode 100644 grails-data-mongodb/bson/src/test/groovy/org/grails/datastore/bson/codecs/CodecExtensionsSpec.groovy
 delete mode 100644 grails-data-mongodb/bson/src/test/groovy/org/grails/datastore/bson/codecs/SimpleCodecsSpec.groovy
 delete mode 100644 grails-data-mongodb/bson/src/test/groovy/org/grails/datastore/bson/codecs/decoders/BasicCollectionTypeDecoderSpec.groovy
 delete mode 100644 grails-data-mongodb/bson/src/test/groovy/org/grails/datastore/bson/codecs/decoders/CustomTypeDecoderSpec.groovy
 delete mode 100644 grails-data-mongodb/bson/src/test/groovy/org/grails/datastore/bson/codecs/decoders/EmbeddedCollectionDecoderSpec.groovy
 delete mode 100644 grails-data-mongodb/bson/src/test/groovy/org/grails/datastore/bson/codecs/decoders/EmbeddedDecoderSpec.groovy
 delete mode 100644 grails-data-mongodb/bson/src/test/groovy/org/grails/datastore/bson/codecs/decoders/IdentityDecoderSpec.groovy
 delete mode 100644 grails-data-mongodb/bson/src/test/groovy/org/grails/datastore/bson/codecs/decoders/SimpleDecoderSpec.groovy
 delete mode 100644 grails-data-mongodb/bson/src/test/groovy/org/grails/datastore/bson/codecs/decoders/TemporalTypeDecodersSpec.groovy
 delete mode 100644 grails-data-mongodb/bson/src/test/groovy/org/grails/datastore/bson/codecs/decoders/TenantIdDecoderSpec.groovy
 delete mode 100644 grails-data-mongodb/bson/src/test/groovy/org/grails/datastore/bson/codecs/domain/Profile.groovy
 delete mode 100644 grails-data-mongodb/bson/src/test/groovy/org/grails/datastore/bson/codecs/encoders/BasicCollectionTypeEncoderSpec.groovy
 delete mode 100644 grails-data-mongodb/bson/src/test/groovy/org/grails/datastore/bson/codecs/encoders/CustomTypeEncoderSpec.groovy
 delete mode 100644 grails-data-mongodb/bson/src/test/groovy/org/grails/datastore/bson/codecs/encoders/EmbeddedCollectionEncoderSpec.groovy
 delete mode 100644 grails-data-mongodb/bson/src/test/groovy/org/grails/datastore/bson/codecs/encoders/EmbeddedEncoderSpec.groovy
 delete mode 100644 grails-data-mongodb/bson/src/test/groovy/org/grails/datastore/bson/codecs/encoders/IdentityEncoderSpec.groovy
 delete mode 100644 grails-data-mongodb/bson/src/test/groovy/org/grails/datastore/bson/codecs/encoders/SimpleEncoderSpec.groovy
 delete mode 100644 grails-data-mongodb/bson/src/test/groovy/org/grails/datastore/bson/codecs/encoders/TemporalTypeEncodersSpec.groovy
 delete mode 100644 grails-data-mongodb/bson/src/test/groovy/org/grails/datastore/bson/codecs/encoders/TenantIdEncoderSpec.groovy
 delete mode 100644 grails-data-mongodb/bson/src/test/groovy/org/grails/datastore/bson/json/JsonReaderSpec.groovy
 delete mode 100644 grails-data-mongodb/bson/src/test/groovy/org/grails/datastore/bson/json/JsonWriterSpec.groovy
 delete mode 100644 grails-data-mongodb/core/src/main/groovy/org/grails/datastore/mapping/mongo/connections/MongoConnectionSource.groovy
 delete mode 100644 grails-data-mongodb/core/src/test/groovy/grails/mongodb/bootstrap/MongoDbDataStoreSpringInitializerBeanDefinitionsSpec.groovy
 delete mode 100644 grails-data-mongodb/core/src/test/groovy/grails/mongodb/geo/DistanceSpec.groovy
 delete mode 100644 grails-data-mongodb/core/src/test/groovy/org/grails/datastore/gorm/mongo/BuildIndexesAsyncSpec.groovy
 delete mode 100644 grails-data-mongodb/core/src/test/groovy/org/grails/datastore/gorm/mongo/BuildIndexesBackgroundFailureSpec.groovy
 delete mode 100644 grails-data-mongodb/core/src/test/groovy/org/grails/datastore/gorm/mongo/BuildIndexesClassificationCostSpec.groovy
 delete mode 100644 grails-data-mongodb/core/src/test/groovy/org/grails/datastore/gorm/mongo/BuildIndexesDisabledSpec.groovy
 delete mode 100644 grails-data-mongodb/core/src/test/groovy/org/grails/datastore/gorm/mongo/BuildIndexesEnabledByDefaultSpec.groovy
 delete mode 100644 grails-data-mongodb/core/src/test/groovy/org/grails/datastore/gorm/mongo/BuildIndexesFailureSummarySpec.groovy
 delete mode 100644 grails-data-mongodb/core/src/test/groovy/org/grails/datastore/gorm/mongo/BuildIndexesHookSpec.groovy
 delete mode 100644 grails-data-mongodb/core/src/test/groovy/org/grails/datastore/gorm/mongo/BuildIndexesKeyOrderSpec.groovy
 delete mode 100644 grails-data-mongodb/core/src/test/groovy/org/grails/datastore/gorm/mongo/BuildIndexesLifecycleSpec.groovy
 delete mode 100644 grails-data-mongodb/core/src/test/groovy/org/grails/datastore/gorm/mongo/BuildIndexesNameConflictSpec.groovy
 delete mode 100644 grails-data-mongodb/core/src/test/groovy/org/grails/datastore/gorm/mongo/BuildIndexesOnDemandSpec.groovy
 delete mode 100644 grails-data-mongodb/core/src/test/groovy/org/grails/datastore/gorm/mongo/BuildIndexesPartialClassificationSpec.groovy
 delete mode 100644 grails-data-mongodb/core/src/test/groovy/org/grails/datastore/gorm/mongo/BuildIndexesRecreateSummarySpec.groovy
 delete mode 100644 grails-data-mongodb/core/src/test/groovy/org/grails/datastore/gorm/mongo/BuildIndexesStaleSnapshotSpec.groovy
 delete mode 100644 grails-data-mongodb/core/src/test/groovy/org/grails/datastore/gorm/mongo/BuildIndexesSummaryLogSpec.groovy
 delete mode 100644 grails-data-mongodb/core/src/test/groovy/org/grails/datastore/gorm/mongo/BuildIndexesUnfinishedSummarySpec.groovy
 delete mode 100644 grails-data-mongodb/core/src/test/groovy/org/grails/datastore/gorm/mongo/BuildIndexesUnreadableIndexListSpec.groovy
 delete mode 100644 grails-data-mongodb/core/src/test/groovy/org/grails/datastore/gorm/mongo/CapturedLog.groovy
 delete mode 100644 grails-data-mongodb/core/src/test/groovy/org/grails/datastore/gorm/mongo/EmbeddedCollectionDirtyTrackingSpec.groovy
 delete mode 100644 grails-data-mongodb/core/src/test/groovy/org/grails/datastore/gorm/mongo/FailingMongoClient.groovy
 delete mode 100644 grails-data-mongodb/core/src/test/groovy/org/grails/datastore/gorm/mongo/HasManyReassignDirtyTrackingSpec.groovy
 delete mode 100644 grails-data-mongodb/core/src/test/groovy/org/grails/datastore/gorm/mongo/MapCriterionValueSpec.groovy
 delete mode 100644 grails-data-mongodb/core/src/test/groovy/org/grails/datastore/gorm/mongo/MongoEntityIdentityTypeSpec.groovy
 delete mode 100644 grails-data-mongodb/core/src/test/groovy/org/grails/datastore/gorm/mongo/PortableIdentityPersistenceSpec.groovy
 delete mode 100644 grails-data-mongodb/core/src/test/groovy/org/grails/datastore/gorm/mongo/bugs/MappingEngineStringIdStorageSpec.groovy
 delete mode 100644 grails-data-mongodb/core/src/test/groovy/org/grails/datastore/gorm/mongo/bugs/MongoIdCoercionSpec.groovy
 delete mode 100644 grails-data-mongodb/core/src/test/groovy/org/grails/datastore/gorm/mongo/bugs/StringIdAssociationStorageSpec.groovy
 delete mode 100644 grails-data-mongodb/core/src/test/groovy/org/grails/datastore/gorm/mongo/connections/BuildIndexesPerConnectionSpec.groovy
 delete mode 100644 grails-data-mongodb/core/src/test/groovy/org/grails/datastore/gorm/mongo/connections/BuildIndexesSharedDeclarationSpec.groovy
 delete mode 100644 grails-data-mongodb/core/src/test/groovy/org/grails/datastore/gorm/mongo/connections/CheckpointRestoreConnectionsSpec.groovy
 delete mode 100644 grails-data-mongodb/core/src/test/groovy/org/grails/datastore/gorm/mongo/connections/SuppliedMongoClientSettingsSpec.groovy
 delete mode 100644 grails-data-mongodb/core/src/test/groovy/org/grails/datastore/mapping/mongo/MongoDatastoreLifecycleSpec.groovy
 delete mode 100644 grails-data-mongodb/core/src/test/groovy/org/grails/datastore/mapping/mongo/config/MongoConfigurationMetadataSpec.groovy
 delete mode 100644 grails-data-mongodb/core/src/test/groovy/org/grails/datastore/mapping/mongo/config/MongoMappingContextSpec.groovy
 delete mode 100644 grails-data-mongodb/core/src/test/groovy/org/grails/datastore/mapping/mongo/connections/MongoConnectionSourceSpec.groovy
 delete mode 100644 grails-data-mongodb/core/src/test/groovy/org/grails/datastore/mapping/mongo/engine/MongoIdCoercionSpec.groovy
 delete mode 100644 grails-data-mongodb/core/src/test/resources/logback-test.xml
 delete mode 100644 grails-data-mongodb/docs/src/docs/asciidoc/gettingStarted/embeddedMongo.adoc
 delete mode 100644 grails-data-mongodb/embedded/build.gradle
 delete mode 100644 grails-data-mongodb/embedded/src/main/java/org/grails/datastore/gorm/mongodb/embedded/EmbeddedMongoBackend.java
 delete mode 100644 grails-data-mongodb/embedded/src/main/java/org/grails/datastore/gorm/mongodb/embedded/EmbeddedMongoInitializer.java
 delete mode 100644 grails-data-mongodb/embedded/src/main/java/org/grails/datastore/gorm/mongodb/embedded/EmbeddedMongoLifecycle.java
 delete mode 100644 grails-data-mongodb/embedded/src/main/java/org/grails/datastore/gorm/mongodb/embedded/EmbeddedMongoSettings.java
 delete mode 100644 grails-data-mongodb/embedded/src/main/java/org/grails/datastore/gorm/mongodb/embedded/FlapdoodleMongoBackend.java
 delete mode 100644 grails-data-mongodb/embedded/src/main/java/org/grails/datastore/gorm/mongodb/embedded/InMemoryMongoBackend.java
 delete mode 100644 grails-data-mongodb/embedded/src/main/java/org/grails/datastore/gorm/mongodb/embedded/ReplicaSetInitiator.java
 delete mode 100644 grails-data-mongodb/embedded/src/main/java/org/grails/datastore/gorm/mongodb/embedded/RunningEmbeddedMongo.java
 delete mode 100644 grails-data-mongodb/embedded/src/main/resources/META-INF/spring.factories
 delete mode 100644 grails-data-mongodb/embedded/src/test/groovy/org/grails/datastore/gorm/mongodb/embedded/EmbeddedMongoInitializerSpec.groovy
 delete mode 100644 grails-data-mongodb/embedded/src/test/groovy/org/grails/datastore/gorm/mongodb/embedded/EmbeddedMongoLifecycleSpec.groovy
 delete mode 100644 grails-data-mongodb/embedded/src/test/groovy/org/grails/datastore/gorm/mongodb/embedded/EmbeddedMongoReplicaSetSpec.groovy
 delete mode 100644 grails-data-mongodb/embedded/src/test/groovy/org/grails/datastore/gorm/mongodb/embedded/EmbeddedMongoSettingsSpec.groovy
 delete mode 100644 grails-data-mongodb/embedded/src/test/groovy/org/grails/datastore/gorm/mongodb/embedded/FlapdoodleMongoBackendSpec.groovy
 delete mode 100644 grails-data-mongodb/embedded/src/test/groovy/org/grails/datastore/gorm/mongodb/embedded/InMemoryMongoBackendSpec.groovy
 delete mode 100644 grails-data-mongodb/embedded/src/test/java/org/grails/datastore/gorm/mongodb/embedded/ContextStoppedServerApplication.java
 delete mode 100644 grails-data-mongodb/ext/src/test/groovy/org/grails/datastore/gorm/mongo/extensions/MongoExtensionsSpec.groovy
 rename grails-data-mongodb/grails-plugin/src/main/resources/META-INF/{additional-spring-configuration-metadata.json => spring-configuration-metadata.json} (88%)
 delete mode 100644 grails-data-mongodb/grails-plugin/src/test/groovy/grails/plugins/mongodb/MongodbGrailsPluginSpec.groovy
 delete mode 100644 grails-data-mongodb/spring-data/src/main/java/org/grails/datastore/gorm/mongodb/springdata/DatastoreMongoClientDatabaseFactory.java
 delete mode 100644 grails-data-mongodb/spring-data/src/test/groovy/org/grails/datastore/gorm/mongodb/springdata/GormSharedSessionMongoTransactionManagerSpec.groovy
 delete mode 100644 grails-data-mongodb/spring-data/src/test/groovy/org/grails/datastore/gorm/mongodb/springdata/SpringDataMongoGormRestoreSpec.groovy
 create mode 100644 grails-data-neo4j/build.gradle
 delete mode 100644 grails-data-neo4j/core/build.gradle
 delete mode 100644 grails-data-neo4j/core/src/main/groovy/org/grails/datastore/gorm/neo4j/Neo4jGormApiFactory.groovy
 delete mode 100644 grails-data-neo4j/core/src/main/groovy/org/grails/datastore/gorm/neo4j/engine/Neo4jQuery.groovy
 delete mode 100644 grails-data-neo4j/core/src/main/groovy/org/grails/datastore/gorm/neo4j/parsers/PlingStemmer.java
 delete mode 100644 grails-data-neo4j/core/src/main/groovy/org/grails/datastore/gorm/neo4j/proxy/HashcodeEqualsAwareProxyFactory.java
 delete mode 100644 grails-data-neo4j/core/src/test/groovy/grails/gorm/tests/HasManyReassignDirtyCheckingSpec.groovy
 delete mode 100644 grails-data-neo4j/core/src/test/groovy/grails/gorm/tests/NamedConnectionsSpec.groovy
 delete mode 100644 grails-data-neo4j/core/src/test/groovy/org/apache/grails/data/neo4j/core/GrailsDataNeo4jTckManager.groovy
 delete mode 100644 grails-data-neo4j/core/src/test/groovy/org/apache/grails/data/neo4j/core/Neo4jGormDatastoreSpec.groovy
 delete mode 100644 grails-data-neo4j/core/src/test/groovy/org/grails/datastore/gorm/neo4j/Neo4jMappingContextSpec.groovy
 delete mode 100644 grails-data-neo4j/core/src/test/resources/META-INF/services/org.apache.grails.data.testing.tck.base.GrailsDataTckManager
 create mode 100644 grails-data-neo4j/examples/grails3-neo4j-hibernate/build.gradle
 copy grails-core/src/test-cli/resources/META-INF/grails-cli.factories => grails-data-neo4j/examples/grails3-neo4j-hibernate/gradle.properties (78%)
 rename {grails-test-examples/neo4j/base => grails-data-neo4j/examples/grails3-neo4j-hibernate}/grails-app/assets/images/apple-touch-icon-retina.png (100%)
 rename {grails-test-examples/neo4j/base => grails-data-neo4j/examples/grails3-neo4j-hibernate}/grails-app/assets/images/apple-touch-icon.png (100%)
 rename {grails-test-examples/neo4j/base => grails-data-neo4j/examples/grails3-neo4j-hibernate}/grails-app/assets/images/favicon.ico (100%)
 rename {grails-test-examples/neo4j/base => grails-data-neo4j/examples/grails3-neo4j-hibernate}/grails-app/assets/images/grails_logo.png (100%)
 rename {grails-test-examples/neo4j/base => grails-data-neo4j/examples/grails3-neo4j-hibernate}/grails-app/assets/images/skin/database_add.png (100%)
 rename {grails-test-examples/neo4j/base => grails-data-neo4j/examples/grails3-neo4j-hibernate}/grails-app/assets/images/skin/database_delete.png (100%)
 rename {grails-test-examples/neo4j/base => grails-data-neo4j/examples/grails3-neo4j-hibernate}/grails-app/assets/images/skin/database_edit.png (100%)
 rename {grails-test-examples/neo4j/base => grails-data-neo4j/examples/grails3-neo4j-hibernate}/grails-app/assets/images/skin/database_save.png (100%)
 rename {grails-test-examples/neo4j/base => grails-data-neo4j/examples/grails3-neo4j-hibernate}/grails-app/assets/images/skin/database_table.png (100%)
 rename {grails-test-examples/neo4j/base => grails-data-neo4j/examples/grails3-neo4j-hibernate}/grails-app/assets/images/skin/exclamation.png (100%)
 rename {grails-test-examples/neo4j/base => grails-data-neo4j/examples/grails3-neo4j-hibernate}/grails-app/assets/images/skin/house.png (100%)
 rename {grails-test-examples/neo4j/base => grails-data-neo4j/examples/grails3-neo4j-hibernate}/grails-app/assets/images/skin/information.png (100%)
 rename {grails-test-examples/neo4j/base => grails-data-neo4j/examples/grails3-neo4j-hibernate}/grails-app/assets/images/skin/shadow.jpg (100%)
 rename {grails-test-examples/neo4j/base => grails-data-neo4j/examples/grails3-neo4j-hibernate}/grails-app/assets/images/skin/sorted_asc.gif (100%)
 rename {grails-test-examples/neo4j/base => grails-data-neo4j/examples/grails3-neo4j-hibernate}/grails-app/assets/images/skin/sorted_desc.gif (100%)
 rename {grails-test-examples/neo4j/base => grails-data-neo4j/examples/grails3-neo4j-hibernate}/grails-app/assets/images/spinner.gif (100%)
 rename {grails-test-examples/neo4j/base => grails-data-neo4j/examples/grails3-neo4j-hibernate}/grails-app/assets/javascripts/application.js (100%)
 rename {grails-test-examples/neo4j/base => grails-data-neo4j/examples/grails3-neo4j-hibernate}/grails-app/assets/stylesheets/application.css (100%)
 rename {grails-test-examples/neo4j/base => grails-data-neo4j/examples/grails3-neo4j-hibernate}/grails-app/assets/stylesheets/errors.css (100%)
 rename {grails-test-examples/neo4j/base => grails-data-neo4j/examples/grails3-neo4j-hibernate}/grails-app/assets/stylesheets/main.css (100%)
 rename {grails-test-examples/neo4j/base => grails-data-neo4j/examples/grails3-neo4j-hibernate}/grails-app/assets/stylesheets/mobile.css (100%)
 rename {grails-test-examples/neo4j/hibernate5 => grails-data-neo4j/examples/grails3-neo4j-hibernate}/grails-app/conf/application.yml (100%)
 rename {grails-test-examples/neo4j/base => grails-data-neo4j/examples/grails3-neo4j-hibernate}/grails-app/conf/logback.xml (100%)
 rename {grails-test-examples/neo4j/base => grails-data-neo4j/examples/grails3-neo4j-hibernate}/grails-app/conf/spring/resources.groovy (100%)
 rename {grails-test-examples/neo4j/base => grails-data-neo4j/examples/grails3-neo4j-hibernate}/grails-app/controllers/UrlMappings.groovy (100%)
 rename {grails-test-examples/neo4j/hibernate5 => grails-data-neo4j/examples/grails3-neo4j-hibernate}/grails-app/controllers/functional/tests/AuthorController.groovy (100%)
 rename {grails-test-examples/neo4j/hibernate5 => grails-data-neo4j/examples/grails3-neo4j-hibernate}/grails-app/controllers/functional/tests/BookController.groovy (100%)
 rename {grails-test-examples/neo4j/hibernate5 => grails-data-neo4j/examples/grails3-neo4j-hibernate}/grails-app/domain/functional/tests/Author.groovy (100%)
 rename {grails-test-examples/neo4j/hibernate5 => grails-data-neo4j/examples/grails3-neo4j-hibernate}/grails-app/domain/functional/tests/Book.groovy (100%)
 rename {grails-test-examples/neo4j/base => grails-data-neo4j/examples/grails3-neo4j-hibernate}/grails-app/i18n/messages.properties (100%)
 rename {grails-test-examples/neo4j/base => grails-data-neo4j/examples/grails3-neo4j-hibernate}/grails-app/i18n/messages_cs_CZ.properties (100%)
 rename {grails-test-examples/neo4j/base => grails-data-neo4j/examples/grails3-neo4j-hibernate}/grails-app/i18n/messages_da.properties (100%)
 rename {grails-test-examples/neo4j/base => grails-data-neo4j/examples/grails3-neo4j-hibernate}/grails-app/i18n/messages_de.properties (100%)
 rename {grails-test-examples/neo4j/base => grails-data-neo4j/examples/grails3-neo4j-hibernate}/grails-app/i18n/messages_es.properties (100%)
 rename {grails-test-examples/neo4j/base => grails-data-neo4j/examples/grails3-neo4j-hibernate}/grails-app/i18n/messages_fr.properties (100%)
 rename {grails-test-examples/neo4j/base => grails-data-neo4j/examples/grails3-neo4j-hibernate}/grails-app/i18n/messages_it.properties (100%)
 rename {grails-test-examples/neo4j/base => grails-data-neo4j/examples/grails3-neo4j-hibernate}/grails-app/i18n/messages_ja.properties (100%)
 rename {grails-test-examples/neo4j/base => grails-data-neo4j/examples/grails3-neo4j-hibernate}/grails-app/i18n/messages_nb.properties (100%)
 rename {grails-test-examples/neo4j/base => grails-data-neo4j/examples/grails3-neo4j-hibernate}/grails-app/i18n/messages_nl.properties (100%)
 rename {grails-test-examples/neo4j/base => grails-data-neo4j/examples/grails3-neo4j-hibernate}/grails-app/i18n/messages_pl.properties (100%)
 rename {grails-test-examples/neo4j/base => grails-data-neo4j/examples/grails3-neo4j-hibernate}/grails-app/i18n/messages_pt_BR.properties (100%)
 rename {grails-test-examples/neo4j/base => grails-data-neo4j/examples/grails3-neo4j-hibernate}/grails-app/i18n/messages_pt_PT.properties (100%)
 rename {grails-test-examples/neo4j/base => grails-data-neo4j/examples/grails3-neo4j-hibernate}/grails-app/i18n/messages_ru.properties (100%)
 rename {grails-test-examples/neo4j/base => grails-data-neo4j/examples/grails3-neo4j-hibernate}/grails-app/i18n/messages_sv.properties (100%)
 rename {grails-test-examples/neo4j/base => grails-data-neo4j/examples/grails3-neo4j-hibernate}/grails-app/i18n/messages_th.properties (100%)
 rename {grails-test-examples/neo4j/base => grails-data-neo4j/examples/grails3-neo4j-hibernate}/grails-app/i18n/messages_zh_CN.properties (100%)
 rename {grails-test-examples/neo4j/base => grails-data-neo4j/examples/grails3-neo4j-hibernate}/grails-app/init/BootStrap.groovy (100%)
 copy {grails-test-examples/neo4j/hibernate5 => grails-data-neo4j/examples/grails3-neo4j-hibernate}/grails-app/init/functional/tests/Application.groovy (100%)
 rename {grails-test-examples/neo4j/hibernate5 => grails-data-neo4j/examples/grails3-neo4j-hibernate}/grails-app/views/author/create.gsp (100%)
 rename {grails-test-examples/neo4j/hibernate5 => grails-data-neo4j/examples/grails3-neo4j-hibernate}/grails-app/views/author/edit.gsp (100%)
 rename {grails-test-examples/neo4j/hibernate5 => grails-data-neo4j/examples/grails3-neo4j-hibernate}/grails-app/views/author/index.gsp (100%)
 rename {grails-test-examples/neo4j/hibernate5 => grails-data-neo4j/examples/grails3-neo4j-hibernate}/grails-app/views/author/show.gsp (100%)
 rename {grails-test-examples/neo4j/base => grails-data-neo4j/examples/grails3-neo4j-hibernate}/grails-app/views/book/create.gsp (100%)
 rename {grails-test-examples/neo4j/base => grails-data-neo4j/examples/grails3-neo4j-hibernate}/grails-app/views/book/edit.gsp (100%)
 rename {grails-test-examples/neo4j/base => grails-data-neo4j/examples/grails3-neo4j-hibernate}/grails-app/views/book/index.gsp (100%)
 rename {grails-test-examples/neo4j/base => grails-data-neo4j/examples/grails3-neo4j-hibernate}/grails-app/views/book/show.gsp (100%)
 copy {grails-test-examples/geb-gebconfig => grails-data-neo4j/examples/grails3-neo4j-hibernate}/grails-app/views/error.gsp (100%)
 rename {grails-test-examples/neo4j/base => grails-data-neo4j/examples/grails3-neo4j-hibernate}/grails-app/views/index.gsp (100%)
 rename {grails-test-examples/neo4j/base => grails-data-neo4j/examples/grails3-neo4j-hibernate}/grails-app/views/layouts/main.gsp (100%)
 rename {grails-test-examples/neo4j/base => grails-data-neo4j/examples/grails3-neo4j-hibernate}/grails-app/views/notFound.gsp (100%)
 rename {grails-test-examples/neo4j/hibernate5 => grails-data-neo4j/examples/grails3-neo4j-hibernate}/src/integration-test/groovy/functional/tests/AuthorControllerSpec.groovy (64%)
 rename {grails-test-examples/neo4j/hibernate5 => grails-data-neo4j/examples/grails3-neo4j-hibernate}/src/integration-test/groovy/functional/tests/BookControllerSpec.groovy (66%)
 rename {grails-test-examples/neo4j/hibernate5 => grails-data-neo4j/examples/grails3-neo4j-hibernate}/src/test/groovy/functional/tests/Neo4jWithHibernateSpec.groovy (76%)
 create mode 100644 grails-data-neo4j/examples/grails3-neo4j/build.gradle
 rename grails-core-cli-legacy/src/main/resources/META-INF/grails-cli.factories => grails-data-neo4j/examples/grails3-neo4j/gradle.properties (78%)
 rename {grails-test-examples/neo4j/hibernate5 => grails-data-neo4j/examples/grails3-neo4j}/grails-app/assets/images/apple-touch-icon-retina.png (100%)
 rename {grails-test-examples/neo4j/hibernate5 => grails-data-neo4j/examples/grails3-neo4j}/grails-app/assets/images/apple-touch-icon.png (100%)
 rename {grails-test-examples/neo4j/hibernate5 => grails-data-neo4j/examples/grails3-neo4j}/grails-app/assets/images/favicon.ico (100%)
 rename {grails-test-examples/neo4j/hibernate5 => grails-data-neo4j/examples/grails3-neo4j}/grails-app/assets/images/grails_logo.png (100%)
 rename {grails-test-examples/neo4j/hibernate5 => grails-data-neo4j/examples/grails3-neo4j}/grails-app/assets/images/skin/database_add.png (100%)
 rename {grails-test-examples/neo4j/hibernate5 => grails-data-neo4j/examples/grails3-neo4j}/grails-app/assets/images/skin/database_delete.png (100%)
 rename {grails-test-examples/neo4j/hibernate5 => grails-data-neo4j/examples/grails3-neo4j}/grails-app/assets/images/skin/database_edit.png (100%)
 rename {grails-test-examples/neo4j/hibernate5 => grails-data-neo4j/examples/grails3-neo4j}/grails-app/assets/images/skin/database_save.png (100%)
 rename {grails-test-examples/neo4j/hibernate5 => grails-data-neo4j/examples/grails3-neo4j}/grails-app/assets/images/skin/database_table.png (100%)
 rename {grails-test-examples/neo4j/hibernate5 => grails-data-neo4j/examples/grails3-neo4j}/grails-app/assets/images/skin/exclamation.png (100%)
 rename {grails-test-examples/neo4j/hibernate5 => grails-data-neo4j/examples/grails3-neo4j}/grails-app/assets/images/skin/house.png (100%)
 rename {grails-test-examples/neo4j/hibernate5 => grails-data-neo4j/examples/grails3-neo4j}/grails-app/assets/images/skin/information.png (100%)
 rename {grails-test-examples/neo4j/hibernate5 => grails-data-neo4j/examples/grails3-neo4j}/grails-app/assets/images/skin/shadow.jpg (100%)
 rename {grails-test-examples/neo4j/hibernate5 => grails-data-neo4j/examples/grails3-neo4j}/grails-app/assets/images/skin/sorted_asc.gif (100%)
 rename {grails-test-examples/neo4j/hibernate5 => grails-data-neo4j/examples/grails3-neo4j}/grails-app/assets/images/skin/sorted_desc.gif (100%)
 rename {grails-test-examples/neo4j/hibernate5 => grails-data-neo4j/examples/grails3-neo4j}/grails-app/assets/images/spinner.gif (100%)
 rename {grails-test-examples/neo4j/hibernate5 => grails-data-neo4j/examples/grails3-neo4j}/grails-app/assets/javascripts/application.js (100%)
 rename {grails-test-examples/neo4j/hibernate5 => grails-data-neo4j/examples/grails3-neo4j}/grails-app/assets/stylesheets/application.css (100%)
 rename {grails-test-examples/neo4j/hibernate5 => grails-data-neo4j/examples/grails3-neo4j}/grails-app/assets/stylesheets/errors.css (100%)
 rename {grails-test-examples/neo4j/hibernate5 => grails-data-neo4j/examples/grails3-neo4j}/grails-app/assets/stylesheets/main.css (100%)
 rename {grails-test-examples/neo4j/hibernate5 => grails-data-neo4j/examples/grails3-neo4j}/grails-app/assets/stylesheets/mobile.css (100%)
 rename {grails-test-examples/neo4j/base => grails-data-neo4j/examples/grails3-neo4j}/grails-app/conf/application.yml (100%)
 rename {grails-test-examples/neo4j/hibernate5 => grails-data-neo4j/examples/grails3-neo4j}/grails-app/conf/logback.xml (100%)
 rename {grails-test-examples/neo4j/hibernate5 => grails-data-neo4j/examples/grails3-neo4j}/grails-app/conf/spring/resources.groovy (100%)
 copy {grails-test-examples/neo4j/hibernate5 => grails-data-neo4j/examples/grails3-neo4j}/grails-app/controllers/UrlMappings.groovy (100%)
 rename {grails-test-examples/neo4j/base => grails-data-neo4j/examples/grails3-neo4j}/grails-app/controllers/functional/tests/BookController.groovy (100%)
 rename {grails-test-examples/neo4j/base => grails-data-neo4j/examples/grails3-neo4j}/grails-app/domain/functional/tests/Book.groovy (100%)
 rename {grails-test-examples/neo4j/base => grails-data-neo4j/examples/grails3-neo4j}/grails-app/domain/functional/tests/Person.groovy (100%)
 rename {grails-test-examples/neo4j/hibernate5 => grails-data-neo4j/examples/grails3-neo4j}/grails-app/i18n/messages.properties (100%)
 rename {grails-test-examples/neo4j/hibernate5 => grails-data-neo4j/examples/grails3-neo4j}/grails-app/i18n/messages_cs_CZ.properties (100%)
 rename {grails-test-examples/neo4j/hibernate5 => grails-data-neo4j/examples/grails3-neo4j}/grails-app/i18n/messages_da.properties (100%)
 rename {grails-test-examples/neo4j/hibernate5 => grails-data-neo4j/examples/grails3-neo4j}/grails-app/i18n/messages_de.properties (100%)
 rename {grails-test-examples/neo4j/hibernate5 => grails-data-neo4j/examples/grails3-neo4j}/grails-app/i18n/messages_es.properties (100%)
 rename {grails-test-examples/neo4j/hibernate5 => grails-data-neo4j/examples/grails3-neo4j}/grails-app/i18n/messages_fr.properties (100%)
 rename {grails-test-examples/neo4j/hibernate5 => grails-data-neo4j/examples/grails3-neo4j}/grails-app/i18n/messages_it.properties (100%)
 rename {grails-test-examples/neo4j/hibernate5 => grails-data-neo4j/examples/grails3-neo4j}/grails-app/i18n/messages_ja.properties (100%)
 rename {grails-test-examples/neo4j/hibernate5 => grails-data-neo4j/examples/grails3-neo4j}/grails-app/i18n/messages_nb.properties (100%)
 rename {grails-test-examples/neo4j/hibernate5 => grails-data-neo4j/examples/grails3-neo4j}/grails-app/i18n/messages_nl.properties (100%)
 rename {grails-test-examples/neo4j/hibernate5 => grails-data-neo4j/examples/grails3-neo4j}/grails-app/i18n/messages_pl.properties (100%)
 rename {grails-test-examples/neo4j/hibernate5 => grails-data-neo4j/examples/grails3-neo4j}/grails-app/i18n/messages_pt_BR.properties (100%)
 rename {grails-test-examples/neo4j/hibernate5 => grails-data-neo4j/examples/grails3-neo4j}/grails-app/i18n/messages_pt_PT.properties (100%)
 rename {grails-test-examples/neo4j/hibernate5 => grails-data-neo4j/examples/grails3-neo4j}/grails-app/i18n/messages_ru.properties (100%)
 rename {grails-test-examples/neo4j/hibernate5 => grails-data-neo4j/examples/grails3-neo4j}/grails-app/i18n/messages_sv.properties (100%)
 rename {grails-test-examples/neo4j/hibernate5 => grails-data-neo4j/examples/grails3-neo4j}/grails-app/i18n/messages_th.properties (100%)
 rename {grails-test-examples/neo4j/hibernate5 => grails-data-neo4j/examples/grails3-neo4j}/grails-app/i18n/messages_zh_CN.properties (100%)
 rename {grails-test-examples/neo4j/hibernate5 => grails-data-neo4j/examples/grails3-neo4j}/grails-app/init/BootStrap.groovy (100%)
 rename {grails-test-examples/neo4j/base => grails-data-neo4j/examples/grails3-neo4j}/grails-app/init/functional/tests/Application.groovy (100%)
 rename {grails-test-examples/neo4j/base => grails-data-neo4j/examples/grails3-neo4j}/grails-app/services/functional/tests/PersonService.groovy (100%)
 rename {grails-test-examples/neo4j/hibernate5 => grails-data-neo4j/examples/grails3-neo4j}/grails-app/views/book/create.gsp (100%)
 rename {grails-test-examples/neo4j/hibernate5 => grails-data-neo4j/examples/grails3-neo4j}/grails-app/views/book/edit.gsp (100%)
 rename {grails-test-examples/neo4j/hibernate5 => grails-data-neo4j/examples/grails3-neo4j}/grails-app/views/book/index.gsp (100%)
 rename {grails-test-examples/neo4j/hibernate5 => grails-data-neo4j/examples/grails3-neo4j}/grails-app/views/book/show.gsp (100%)
 copy {grails-test-examples/geb-gebconfig => grails-data-neo4j/examples/grails3-neo4j}/grails-app/views/error.gsp (100%)
 rename {grails-test-examples/neo4j/hibernate5 => grails-data-neo4j/examples/grails3-neo4j}/grails-app/views/index.gsp (100%)
 rename {grails-test-examples/neo4j/hibernate5 => grails-data-neo4j/examples/grails3-neo4j}/grails-app/views/layouts/main.gsp (100%)
 rename {grails-test-examples/neo4j/hibernate5 => grails-data-neo4j/examples/grails3-neo4j}/grails-app/views/notFound.gsp (100%)
 rename {grails-test-examples/neo4j/base => grails-data-neo4j/examples/grails3-neo4j}/src/integration-test/groovy/functional/tests/BookControllerSpec.groovy (65%)
 rename {grails-test-examples/neo4j/base => grails-data-neo4j/examples/grails3-neo4j}/src/test/groovy/functional/tests/BookSpec.groovy (100%)
 rename {grails-test-examples/neo4j/base => grails-data-neo4j/examples/grails3-neo4j}/src/test/groovy/functional/tests/PersonSpec.groovy (100%)
 rename {grails-test-examples/neo4j/base => grails-data-neo4j/examples/grails3-neo4j}/src/test/groovy/functional/tests/StandaloneNeo4jSpec.groovy (100%)
 copy grails-data-neo4j/{core/src/main/groovy/grails/neo4j/Direction.groovy => examples/neo4j-spring-boot/build.gradle} (53%)
 rename grails-data-hibernate7/dbmigration/src/test-cli/resources/logging.properties => grails-data-neo4j/examples/neo4j-spring-boot/gradle.properties (78%)
 rename {grails-test-examples/neo4j/spring-boot => grails-data-neo4j/examples/neo4j-spring-boot}/src/main/groovy/example/Application.groovy (100%)
 rename {grails-test-examples/neo4j/spring-boot => grails-data-neo4j/examples/neo4j-spring-boot}/src/main/groovy/example/Book.groovy (100%)
 rename {grails-test-examples/neo4j/spring-boot => grails-data-neo4j/examples/neo4j-spring-boot}/src/main/groovy/example/BookController.groovy (100%)
 rename {grails-test-examples/neo4j/spring-boot => grails-data-neo4j/examples/neo4j-spring-boot}/src/main/groovy/example/BookService.groovy (100%)
 rename {grails-test-examples/neo4j/spring-boot => grails-data-neo4j/examples/neo4j-spring-boot}/src/main/resources/application.yml (100%)
 rename {grails-test-examples/neo4j/spring-boot => grails-data-neo4j/examples/neo4j-spring-boot}/src/test/groovy/example/BookControllerSpec.groovy (100%)
 rename end-to-end/legacy-commands-plugin/src/main/groovy/legacy/commands/plugin/GreetingService.groovy => grails-data-neo4j/examples/neo4j-standalone/build.gradle (85%)
 rename grails-data-hibernate5/dbmigration/src/test-cli/resources/logging.properties => grails-data-neo4j/examples/neo4j-standalone/gradle.properties (78%)
 rename {grails-test-examples/neo4j => grails-data-neo4j/examples}/neo4j-standalone/src/main/groovy/example/Person.groovy (100%)
 rename {grails-test-examples/neo4j => grails-data-neo4j/examples}/neo4j-standalone/src/main/groovy/example/PersonService.groovy (100%)
 rename {grails-test-examples/neo4j => grails-data-neo4j/examples}/neo4j-standalone/src/test/groovy/example/PersonServiceSpec.groovy (100%)
 rename {grails-configuration-metadata => grails-data-neo4j/examples/test-data-service}/build.gradle (50%)
 rename grails-core/src/test-cli/resources/META-INF/grails-cli.factories => grails-data-neo4j/examples/test-data-service/gradle.properties (78%)
 rename {grails-test-examples/neo4j => grails-data-neo4j/examples}/test-data-service/grails-app/conf/application.groovy (100%)
 rename {grails-test-examples/neo4j => grails-data-neo4j/examples}/test-data-service/grails-app/conf/application.yml (69%)
 rename {grails-test-examples/neo4j => grails-data-neo4j/examples}/test-data-service/grails-app/conf/logback.xml (100%)
 rename {grails-test-examples/neo4j => grails-data-neo4j/examples}/test-data-service/grails-app/conf/spring/resources.groovy (100%)
 rename {grails-test-examples/neo4j => grails-data-neo4j/examples}/test-data-service/grails-app/controllers/example/ApplicationController.groovy (100%)
 rename {grails-test-examples/neo4j => grails-data-neo4j/examples}/test-data-service/grails-app/controllers/example/UrlMappings.groovy (100%)
 rename {grails-test-examples/neo4j => grails-data-neo4j/examples}/test-data-service/grails-app/domain/example/Book.groovy (100%)
 rename {grails-test-examples/neo4j => grails-data-neo4j/examples}/test-data-service/grails-app/domain/example/Person.groovy (100%)
 rename {grails-test-examples/neo4j => grails-data-neo4j/examples}/test-data-service/grails-app/domain/example/Student.groovy (100%)
 rename {grails-test-examples/neo4j => grails-data-neo4j/examples}/test-data-service/grails-app/i18n/messages.properties (100%)
 copy {grails-test-examples/neo4j => grails-data-neo4j/examples}/test-data-service/grails-app/init/example/Application.groovy (99%)
 copy {grails-test-examples/neo4j => grails-data-neo4j/examples}/test-data-service/grails-app/init/example/BootStrap.groovy (99%)
 rename {grails-test-examples/neo4j => grails-data-neo4j/examples}/test-data-service/grails-app/services/example/BookService.groovy (100%)
 rename {grails-test-examples/neo4j => grails-data-neo4j/examples}/test-data-service/grails-app/services/example/LibraryService.groovy (100%)
 rename {grails-test-examples/neo4j => grails-data-neo4j/examples}/test-data-service/grails-app/services/example/PersonService.groovy (100%)
 rename {grails-test-examples/neo4j => grails-data-neo4j/examples}/test-data-service/grails-app/services/example/StudentService.groovy (94%)
 rename {grails-test-examples/neo4j => grails-data-neo4j/examples}/test-data-service/grails-app/services/example/TestService.groovy (100%)
 rename {grails-test-examples/neo4j => grails-data-neo4j/examples}/test-data-service/grails-app/views/application/index.gson (100%)
 rename {grails-test-examples/neo4j => grails-data-neo4j/examples}/test-data-service/grails-app/views/error.gson (100%)
 rename {grails-test-examples/neo4j => grails-data-neo4j/examples}/test-data-service/grails-app/views/errors/_errors.gson (100%)
 rename {grails-test-examples/neo4j => grails-data-neo4j/examples}/test-data-service/grails-app/views/notFound.gson (100%)
 rename {grails-test-examples/neo4j => grails-data-neo4j/examples}/test-data-service/grails-app/views/object/_object.gson (100%)
 rename {grails-test-examples/neo4j => grails-data-neo4j/examples}/test-data-service/src/integration-test/groovy/example/StudentServiceSpec.groovy (100%)
 copy {grails-test-examples/neo4j => grails-data-neo4j/examples}/test-data-service/src/integration-test/groovy/example/TestServiceSpec.groovy (100%)
 rename {grails-test-examples/neo4j => grails-data-neo4j/examples}/test-data-service/src/main/groovy/example/LoginAuthenticationSucessHandler.groovy (91%)
 copy {grails-test-examples/neo4j => grails-data-neo4j/examples}/test-data-service/src/main/groovy/example/TestBean.groovy (100%)
 create mode 100644 grails-data-neo4j/gradle.properties
 delete mode 100644 grails-data-neo4j/gradle/neo4j-harness-test-config.gradle
 create mode 100644 grails-data-neo4j/grails-datastore-gorm-neo4j/build.gradle
 copy grails-data-neo4j/{core => grails-datastore-gorm-neo4j}/src/main/groovy/grails/neo4j/Direction.groovy (99%)
 rename grails-data-neo4j/{core => grails-datastore-gorm-neo4j}/src/main/groovy/grails/neo4j/Neo4jEntity.groovy (92%)
 rename grails-data-neo4j/{core => grails-datastore-gorm-neo4j}/src/main/groovy/grails/neo4j/Node.groovy (99%)
 rename grails-data-neo4j/{core => grails-datastore-gorm-neo4j}/src/main/groovy/grails/neo4j/Path.groovy (96%)
 rename grails-data-neo4j/{core => grails-datastore-gorm-neo4j}/src/main/groovy/grails/neo4j/Relationship.groovy (76%)
 rename grails-data-neo4j/{core => grails-datastore-gorm-neo4j}/src/main/groovy/grails/neo4j/mapping/MappingBuilder.groovy (97%)
 copy grails-data-neo4j/{core => grails-datastore-gorm-neo4j}/src/main/groovy/grails/neo4j/services/Cypher.groovy (99%)
 rename grails-data-neo4j/{core => grails-datastore-gorm-neo4j}/src/main/groovy/org/grails/datastore/gorm/neo4j/CypherBuilder.java (85%)
 rename grails-data-neo4j/{core => grails-datastore-gorm-neo4j}/src/main/groovy/org/grails/datastore/gorm/neo4j/GraphClassMapping.groovy (86%)
 rename grails-data-neo4j/{core => grails-datastore-gorm-neo4j}/src/main/groovy/org/grails/datastore/gorm/neo4j/GraphGormMappingFactory.groovy (52%)
 rename grails-data-neo4j/{core => grails-datastore-gorm-neo4j}/src/main/groovy/org/grails/datastore/gorm/neo4j/GraphPersistentEntity.groovy (87%)
 rename grails-data-neo4j/{core => grails-datastore-gorm-neo4j}/src/main/groovy/org/grails/datastore/gorm/neo4j/IdGenerator.java (99%)
 rename grails-data-neo4j/{core => grails-datastore-gorm-neo4j}/src/main/groovy/org/grails/datastore/gorm/neo4j/Neo4jDatastore.java (80%)
 rename grails-data-neo4j/{core => grails-datastore-gorm-neo4j}/src/main/groovy/org/grails/datastore/gorm/neo4j/Neo4jDatastoreTransactionManager.java (97%)
 rename grails-data-neo4j/{core => grails-datastore-gorm-neo4j}/src/main/groovy/org/grails/datastore/gorm/neo4j/Neo4jEntityTraitProvider.groovy (94%)
 rename grails-data-neo4j/{core => grails-datastore-gorm-neo4j}/src/main/groovy/org/grails/datastore/gorm/neo4j/Neo4jMappingContext.java (77%)
 rename grails-data-neo4j/{core => grails-datastore-gorm-neo4j}/src/main/groovy/org/grails/datastore/gorm/neo4j/Neo4jSession.java (89%)
 rename grails-data-neo4j/{core => grails-datastore-gorm-neo4j}/src/main/groovy/org/grails/datastore/gorm/neo4j/Neo4jTransaction.groovy (86%)
 rename grails-data-neo4j/{core => grails-datastore-gorm-neo4j}/src/main/groovy/org/grails/datastore/gorm/neo4j/RelationshipPersistentEntity.groovy (80%)
 rename grails-data-neo4j/{core => grails-datastore-gorm-neo4j}/src/main/groovy/org/grails/datastore/gorm/neo4j/RelationshipUtils.groovy (87%)
 copy grails-data-neo4j/{core => grails-datastore-gorm-neo4j}/src/main/groovy/org/grails/datastore/gorm/neo4j/SessionFlushedEvent.java (99%)
 rename grails-data-neo4j/{core => grails-datastore-gorm-neo4j}/src/main/groovy/org/grails/datastore/gorm/neo4j/TypeDirectionPair.java (92%)
 rename grails-data-neo4j/{core => grails-datastore-gorm-neo4j}/src/main/groovy/org/grails/datastore/gorm/neo4j/api/Neo4jGormStaticApi.groovy (79%)
 rename grails-data-neo4j/{core => grails-datastore-gorm-neo4j}/src/main/groovy/org/grails/datastore/gorm/neo4j/collection/GraphAdapter.groovy (78%)
 rename grails-data-neo4j/{core => grails-datastore-gorm-neo4j}/src/main/groovy/org/grails/datastore/gorm/neo4j/collection/Neo4jAssociationResultList.groovy (94%)
 rename grails-data-neo4j/{core => grails-datastore-gorm-neo4j}/src/main/groovy/org/grails/datastore/gorm/neo4j/collection/Neo4jList.groovy (90%)
 rename grails-data-neo4j/{core => grails-datastore-gorm-neo4j}/src/main/groovy/org/grails/datastore/gorm/neo4j/collection/Neo4jPath.groovy (82%)
 rename grails-data-neo4j/{core => grails-datastore-gorm-neo4j}/src/main/groovy/org/grails/datastore/gorm/neo4j/collection/Neo4jPersistentList.groovy (95%)
 rename grails-data-neo4j/{core => grails-datastore-gorm-neo4j}/src/main/groovy/org/grails/datastore/gorm/neo4j/collection/Neo4jPersistentSet.groovy (91%)
 rename grails-data-neo4j/{core => grails-datastore-gorm-neo4j}/src/main/groovy/org/grails/datastore/gorm/neo4j/collection/Neo4jPersistentSortedSet.groovy (94%)
 rename grails-data-neo4j/{core => grails-datastore-gorm-neo4j}/src/main/groovy/org/grails/datastore/gorm/neo4j/collection/Neo4jRelationship.groovy (97%)
 rename grails-data-neo4j/{core => grails-datastore-gorm-neo4j}/src/main/groovy/org/grails/datastore/gorm/neo4j/collection/Neo4jResultList.groovy (80%)
 rename grails-data-neo4j/{core => grails-datastore-gorm-neo4j}/src/main/groovy/org/grails/datastore/gorm/neo4j/collection/Neo4jSet.groovy (89%)
 rename grails-data-neo4j/{core => grails-datastore-gorm-neo4j}/src/main/groovy/org/grails/datastore/gorm/neo4j/collection/Neo4jSortedSet.groovy (89%)
 rename grails-data-neo4j/{core => grails-datastore-gorm-neo4j}/src/main/groovy/org/grails/datastore/gorm/neo4j/config/Neo4jDriverConfigBuilder.groovy (69%)
 rename grails-data-neo4j/{core => grails-datastore-gorm-neo4j}/src/main/groovy/org/grails/datastore/gorm/neo4j/config/Settings.java (97%)
 rename grails-data-neo4j/{core => grails-datastore-gorm-neo4j}/src/main/groovy/org/grails/datastore/gorm/neo4j/connections/Neo4jConnectionSourceFactory.java (83%)
 rename grails-data-neo4j/{core => grails-datastore-gorm-neo4j}/src/main/groovy/org/grails/datastore/gorm/neo4j/connections/Neo4jConnectionSourceSettings.groovy (99%)
 rename grails-data-neo4j/{core => grails-datastore-gorm-neo4j}/src/main/groovy/org/grails/datastore/gorm/neo4j/connections/Neo4jConnectionSourceSettingsBuilder.groovy (99%)
 rename grails-data-neo4j/{core => grails-datastore-gorm-neo4j}/src/main/groovy/org/grails/datastore/gorm/neo4j/connections/Neo4jEmbeddedConnectionSource.java (99%)
 rename grails-data-neo4j/{core => grails-datastore-gorm-neo4j}/src/main/groovy/org/grails/datastore/gorm/neo4j/engine/DynamicAssociationSupport.java (82%)
 rename grails-data-neo4j/{core => grails-datastore-gorm-neo4j}/src/main/groovy/org/grails/datastore/gorm/neo4j/engine/Neo4jAssociationQueryExecutor.groovy (71%)
 rename grails-data-neo4j/{core => grails-datastore-gorm-neo4j}/src/main/groovy/org/grails/datastore/gorm/neo4j/engine/Neo4jEntityPersister.java (73%)
 rename grails-data-neo4j/{core => grails-datastore-gorm-neo4j}/src/main/groovy/org/grails/datastore/gorm/neo4j/engine/Neo4jModificationTrackingEntityAccess.groovy (99%)
 create mode 100644 grails-data-neo4j/grails-datastore-gorm-neo4j/src/main/groovy/org/grails/datastore/gorm/neo4j/engine/Neo4jQuery.groovy
 rename grails-data-neo4j/{core => grails-datastore-gorm-neo4j}/src/main/groovy/org/grails/datastore/gorm/neo4j/engine/RelationshipPendingDelete.java (90%)
 rename grails-data-neo4j/{core => grails-datastore-gorm-neo4j}/src/main/groovy/org/grails/datastore/gorm/neo4j/engine/RelationshipPendingInsert.java (71%)
 rename grails-data-neo4j/{core => grails-datastore-gorm-neo4j}/src/main/groovy/org/grails/datastore/gorm/neo4j/extensions/Neo4jExtensions.groovy (77%)
 rename grails-data-neo4j/{core => grails-datastore-gorm-neo4j}/src/main/groovy/org/grails/datastore/gorm/neo4j/identity/SnowflakeIdGenerator.java (94%)
 rename grails-data-neo4j/{core => grails-datastore-gorm-neo4j}/src/main/groovy/org/grails/datastore/gorm/neo4j/mapping/config/Attribute.groovy (99%)
 rename grails-data-neo4j/{core => grails-datastore-gorm-neo4j}/src/main/groovy/org/grails/datastore/gorm/neo4j/mapping/config/DynamicAssociation.java (99%)
 rename grails-data-neo4j/{core => grails-datastore-gorm-neo4j}/src/main/groovy/org/grails/datastore/gorm/neo4j/mapping/config/DynamicToManyAssociation.java (98%)
 rename grails-data-neo4j/{core => grails-datastore-gorm-neo4j}/src/main/groovy/org/grails/datastore/gorm/neo4j/mapping/config/DynamicToOneAssociation.java (93%)
 rename grails-data-neo4j/{core => grails-datastore-gorm-neo4j}/src/main/groovy/org/grails/datastore/gorm/neo4j/mapping/config/NodeConfig.groovy (95%)
 rename grails-data-neo4j/{core => grails-datastore-gorm-neo4j}/src/main/groovy/org/grails/datastore/gorm/neo4j/mapping/config/RelationshipConfig.groovy (96%)
 rename grails-data-neo4j/{core => grails-datastore-gorm-neo4j}/src/main/groovy/org/grails/datastore/gorm/neo4j/mapping/reflect/Neo4jNameUtils.groovy (91%)
 create mode 100644 grails-data-neo4j/grails-datastore-gorm-neo4j/src/main/groovy/org/grails/datastore/gorm/neo4j/parsers/PlingStemmer.java
 create mode 100644 grails-data-neo4j/grails-datastore-gorm-neo4j/src/main/groovy/org/grails/datastore/gorm/neo4j/proxy/HashcodeEqualsAwareProxyFactory.java
 rename grails-data-neo4j/{core => grails-datastore-gorm-neo4j}/src/main/groovy/org/grails/datastore/gorm/neo4j/proxy/Neo4jAssociationQueryProxyHandler.java (99%)
 rename grails-data-neo4j/{core => grails-datastore-gorm-neo4j}/src/main/groovy/org/grails/datastore/gorm/neo4j/proxy/Neo4jProxyFactory.java (99%)
 rename grails-data-neo4j/{core => grails-datastore-gorm-neo4j}/src/main/groovy/org/grails/datastore/gorm/neo4j/services/implementers/FindAllCypherQueryImplementer.groovy (93%)
 rename grails-data-neo4j/{core => grails-datastore-gorm-neo4j}/src/main/groovy/org/grails/datastore/gorm/neo4j/services/implementers/FindOneCypherQueryImplementer.groovy (92%)
 rename grails-data-neo4j/{core => grails-datastore-gorm-neo4j}/src/main/groovy/org/grails/datastore/gorm/neo4j/services/implementers/FindPathCypherQueryImplementer.groovy (83%)
 rename grails-data-neo4j/{core => grails-datastore-gorm-neo4j}/src/main/groovy/org/grails/datastore/gorm/neo4j/services/implementers/FindShortestPathImplementer.groovy (76%)
 rename grails-data-neo4j/{core => grails-datastore-gorm-neo4j}/src/main/groovy/org/grails/datastore/gorm/neo4j/services/implementers/StatementResultCypherQueryImplementer.groovy (88%)
 rename grails-data-neo4j/{core => grails-datastore-gorm-neo4j}/src/main/groovy/org/grails/datastore/gorm/neo4j/services/implementers/UpdateCypherQueryImplementer.groovy (82%)
 rename grails-data-neo4j/{core => grails-datastore-gorm-neo4j}/src/main/groovy/org/grails/datastore/gorm/neo4j/services/transform/CypherQueryStringTransformer.groovy (96%)
 rename grails-data-neo4j/{core => grails-datastore-gorm-neo4j}/src/main/groovy/org/grails/datastore/gorm/neo4j/util/EmbeddedNeo4jServer.java (84%)
 rename grails-data-neo4j/{core => grails-datastore-gorm-neo4j}/src/main/groovy/org/grails/datastore/gorm/neo4j/util/IteratorUtil.java (96%)
 rename grails-data-neo4j/{core => grails-datastore-gorm-neo4j}/src/main/resources/META-INF/services/org.codehaus.groovy.runtime.ExtensionModule (100%)
 rename grails-data-neo4j/{core => grails-datastore-gorm-neo4j}/src/main/resources/META-INF/services/org.grails.compiler.gorm.GormEntityTraitProvider (100%)
 rename grails-data-neo4j/{core => grails-datastore-gorm-neo4j}/src/main/resources/META-INF/services/org.grails.datastore.gorm.services.ServiceImplementer (100%)
 rename grails-data-neo4j/{core => grails-datastore-gorm-neo4j}/src/test/groovy/grails/gorm/tests/AssignedIdSpec.groovy (100%)
 rename grails-data-neo4j/{core => grails-datastore-gorm-neo4j}/src/test/groovy/grails/gorm/tests/CascadingDeleteSpec.groovy (87%)
 rename grails-data-neo4j/{core => grails-datastore-gorm-neo4j}/src/test/groovy/grails/gorm/tests/CustomLabelWithDynamicAssociationSpec.groovy (88%)
 rename grails-data-neo4j/{core => grails-datastore-gorm-neo4j}/src/test/groovy/grails/gorm/tests/CypherQueryStringSpec.groovy (94%)
 rename grails-data-neo4j/{core => grails-datastore-gorm-neo4j}/src/test/groovy/grails/gorm/tests/EagerFetchingSpec.groovy (88%)
 rename grails-data-neo4j/{core => grails-datastore-gorm-neo4j}/src/test/groovy/grails/gorm/tests/EntityParseSpec.groovy (100%)
 rename grails-data-neo4j/{core => grails-datastore-gorm-neo4j}/src/test/groovy/grails/gorm/tests/FindByIsNullSpec.groovy (87%)
 create mode 100644 grails-data-neo4j/grails-datastore-gorm-neo4j/src/test/groovy/grails/gorm/tests/GormDatastoreSpec.groovy
 rename grails-data-neo4j/{core => grails-datastore-gorm-neo4j}/src/test/groovy/grails/gorm/tests/GroovyProxySpec.groovy (83%)
 rename grails-data-neo4j/{core => grails-datastore-gorm-neo4j}/src/test/groovy/grails/gorm/tests/HasManyInheritanceSpec.groovy (100%)
 rename grails-data-neo4j/{core => grails-datastore-gorm-neo4j}/src/test/groovy/grails/gorm/tests/InheritanceProxySpec.groovy (81%)
 rename grails-data-neo4j/{core => grails-datastore-gorm-neo4j}/src/test/groovy/grails/gorm/tests/JavaxValidationSpec.groovy (84%)
 rename grails-data-neo4j/{core => grails-datastore-gorm-neo4j}/src/test/groovy/grails/gorm/tests/JoinCriteriaSpec.groovy (89%)
 rename grails-data-neo4j/{core => grails-datastore-gorm-neo4j}/src/test/groovy/grails/gorm/tests/LabelStrategySpec.groovy (93%)
 rename grails-data-neo4j/{core => grails-datastore-gorm-neo4j}/src/test/groovy/grails/gorm/tests/LikeQuerySpec.groovy (91%)
 rename grails-data-neo4j/{core => grails-datastore-gorm-neo4j}/src/test/groovy/grails/gorm/tests/ManyToManyQuerySpec.groovy (90%)
 rename grails-data-neo4j/{core => grails-datastore-gorm-neo4j}/src/test/groovy/grails/gorm/tests/ManyToManySpec.groovy (87%)
 rename grails-data-neo4j/{core => grails-datastore-gorm-neo4j}/src/test/groovy/grails/gorm/tests/MapPropertySpec.groovy (88%)
 rename grails-data-neo4j/{core => grails-datastore-gorm-neo4j}/src/test/groovy/grails/gorm/tests/MarkDirtyFalseSpec.groovy (73%)
 rename grails-data-neo4j/{core => grails-datastore-gorm-neo4j}/src/test/groovy/grails/gorm/tests/MiscSpec.groovy (85%)
 rename grails-data-neo4j/{core => grails-datastore-gorm-neo4j}/src/test/groovy/grails/gorm/tests/MultipleConnectionsSpec.groovy (93%)
 rename grails-data-neo4j/{core => grails-datastore-gorm-neo4j}/src/test/groovy/grails/gorm/tests/NativeIdentityGeneratorSpec.groovy (87%)
 rename grails-data-neo4j/{core => grails-datastore-gorm-neo4j}/src/test/groovy/grails/gorm/tests/Neo4jNameUtilsSpec.groovy (100%)
 rename grails-data-neo4j/{core => grails-datastore-gorm-neo4j}/src/test/groovy/grails/gorm/tests/Neo4jResultListSpec.groovy (85%)
 rename grails-data-neo4j/{core => grails-datastore-gorm-neo4j}/src/test/groovy/grails/gorm/tests/NullValueEqualSpec.groovy (84%)
 rename grails-data-neo4j/{core => grails-datastore-gorm-neo4j}/src/test/groovy/grails/gorm/tests/OneToManyUpdateSpec.groovy (89%)
 rename grails-data-neo4j/{core => grails-datastore-gorm-neo4j}/src/test/groovy/grails/gorm/tests/OneToOneSpec.groovy (82%)
 rename grails-data-neo4j/{core => grails-datastore-gorm-neo4j}/src/test/groovy/grails/gorm/tests/OptimisticLockingSpec.groovy (70%)
 rename grails-data-neo4j/{core => grails-datastore-gorm-neo4j}/src/test/groovy/grails/gorm/tests/OrphanDeleteSpec.groovy (87%)
 rename grails-data-neo4j/{core => grails-datastore-gorm-neo4j}/src/test/groovy/grails/gorm/tests/PagedResultSpec.groovy (91%)
 rename grails-data-neo4j/{core => grails-datastore-gorm-neo4j}/src/test/groovy/grails/gorm/tests/PersistenceEventListenerSpec.groovy (87%)
 rename grails-data-neo4j/{core => grails-datastore-gorm-neo4j}/src/test/groovy/grails/gorm/tests/Pet.groovy (88%)
 rename grails-data-neo4j/{core => grails-datastore-gorm-neo4j}/src/test/groovy/grails/gorm/tests/ProjectionsSpec.groovy (89%)
 rename grails-data-neo4j/{core => grails-datastore-gorm-neo4j}/src/test/groovy/grails/gorm/tests/ProxySpec.groovy (86%)
 rename grails-data-neo4j/{core => grails-datastore-gorm-neo4j}/src/test/groovy/grails/gorm/tests/ReadManyObjectsSpec.groovy (86%)
 rename grails-data-neo4j/{core => grails-datastore-gorm-neo4j}/src/test/groovy/grails/gorm/tests/RelationshipMappingSpec.groovy (93%)
 rename grails-data-neo4j/{core => grails-datastore-gorm-neo4j}/src/test/groovy/grails/gorm/tests/RelationshipUtilsSpec.groovy (73%)
 rename grails-data-neo4j/{core => grails-datastore-gorm-neo4j}/src/test/groovy/grails/gorm/tests/SchemalessSpec.groovy (80%)
 rename grails-data-neo4j/{core => grails-datastore-gorm-neo4j}/src/test/groovy/grails/gorm/tests/TransientsSpec.groovy (87%)
 rename grails-data-neo4j/{core => grails-datastore-gorm-neo4j}/src/test/groovy/grails/gorm/tests/UniqueConstraintSpec.groovy (91%)
 rename grails-data-neo4j/{core => grails-datastore-gorm-neo4j}/src/test/groovy/grails/gorm/tests/UpdateWithProxyPresentSpec.groovy (100%)
 rename grails-data-neo4j/{core => grails-datastore-gorm-neo4j}/src/test/groovy/grails/gorm/tests/ValidationSpec.groovy (86%)
 rename grails-data-neo4j/{core => grails-datastore-gorm-neo4j}/src/test/groovy/grails/gorm/tests/WithTransactionSpec.groovy (90%)
 rename grails-data-neo4j/{core => grails-datastore-gorm-neo4j}/src/test/groovy/grails/gorm/tests/assignedid/OneToManyCreateSpec.groovy (100%)
 rename grails-data-neo4j/{core => grails-datastore-gorm-neo4j}/src/test/groovy/grails/gorm/tests/assignedid/domain/Owner.groovy (100%)
 rename grails-data-neo4j/{core => grails-datastore-gorm-neo4j}/src/test/groovy/grails/gorm/tests/assignedid/domain/Pet.groovy (100%)
 rename grails-data-neo4j/{core => grails-datastore-gorm-neo4j}/src/test/groovy/grails/gorm/tests/cypher/OneToManyCreateSpec.groovy (91%)
 rename grails-data-neo4j/{core => grails-datastore-gorm-neo4j}/src/test/groovy/grails/gorm/tests/cypher/domain/Owner.groovy (100%)
 rename grails-data-neo4j/{core => grails-datastore-gorm-neo4j}/src/test/groovy/grails/gorm/tests/cypher/domain/Pet.groovy (100%)
 rename grails-data-neo4j/{core => grails-datastore-gorm-neo4j}/src/test/groovy/grails/gorm/tests/idgeneration/CustomIdGeneratorSpec.groovy (100%)
 rename grails-data-neo4j/{core => grails-datastore-gorm-neo4j}/src/test/groovy/grails/gorm/tests/idgeneration/SnowflakeIdGeneratorSpec.groovy (100%)
 rename grails-data-neo4j/{core => grails-datastore-gorm-neo4j}/src/test/groovy/grails/gorm/tests/multitenancy/MultiTenancySpec.groovy (100%)
 rename grails-data-neo4j/{core => grails-datastore-gorm-neo4j}/src/test/groovy/grails/gorm/tests/multitenancy/SingleTenancySpec.groovy (95%)
 rename grails-data-neo4j/{core => grails-datastore-gorm-neo4j}/src/test/groovy/grails/gorm/tests/path/PathSpec.groovy (100%)
 rename grails-data-neo4j/{core => grails-datastore-gorm-neo4j}/src/test/groovy/grails/gorm/tests/path/RelationshipSpec.groovy (100%)
 rename grails-data-neo4j/{core => grails-datastore-gorm-neo4j}/src/test/groovy/grails/gorm/tests/path/domain/Person.groovy (100%)
 rename grails-data-neo4j/{core => grails-datastore-gorm-neo4j}/src/test/groovy/grails/gorm/tests/services/Author.groovy (100%)
 rename grails-data-neo4j/{core => grails-datastore-gorm-neo4j}/src/test/groovy/grails/gorm/tests/services/AuthorBooks.groovy (100%)
 rename grails-data-neo4j/{core => grails-datastore-gorm-neo4j}/src/test/groovy/grails/gorm/tests/services/Book.groovy (100%)
 rename grails-data-neo4j/{core => grails-datastore-gorm-neo4j}/src/test/groovy/grails/gorm/tests/services/CypherQueryTransformerSpec.groovy (100%)
 rename grails-data-neo4j/{core => grails-datastore-gorm-neo4j}/src/test/groovy/grails/neo4j/Neo4jEntitySpec.groovy (100%)
 rename grails-data-neo4j/{core => grails-datastore-gorm-neo4j}/src/test/groovy/org/grails/datastore/gorm/neo4j/ApiExtensionsSpec.groovy (86%)
 copy end-to-end/legacy-commands/grails-app/init/legacycommands/Application.groovy => grails-data-neo4j/grails-datastore-gorm-neo4j/src/test/groovy/org/grails/datastore/gorm/neo4j/Neo4jSuite.groovy (76%)
 rename grails-data-neo4j/{core => grails-datastore-gorm-neo4j}/src/test/groovy/org/grails/datastore/gorm/neo4j/RelationshipUtilsSpec.groovy (100%)
 rename grails-data-neo4j/{core => grails-datastore-gorm-neo4j}/src/test/groovy/org/grails/datastore/gorm/neo4j/TransactionPropagationSpec.groovy (89%)
 rename grails-data-neo4j/{core => grails-datastore-gorm-neo4j}/src/test/groovy/org/grails/datastore/gorm/neo4j/config/Neo4jConnectionSourceSettingsSpec.groovy (60%)
 rename grails-data-neo4j/{core => grails-datastore-gorm-neo4j}/src/test/groovy/org/grails/datastore/gorm/neo4j/config/Neo4jDriverConfigBuilderSpec.groovy (100%)
 rename grails-data-neo4j/{core => grails-datastore-gorm-neo4j}/src/test/resources/logback.xml (100%)
 rename grails-data-neo4j/{core => grails-datastore-gorm-neo4j}/src/test/resources/neo4j-server.properties (100%)
 rename grails-data-neo4j/{core => grails-datastore-gorm-neo4j}/src/test/resources/spy.properties (100%)
 rename {end-to-end/legacy-g7-command-plugin => grails-data-neo4j}/settings.gradle (54%)
 delete mode 100644 grails-data-simple/src/test/groovy/org/grails/datastore/mapping/simple/SimpleMapSessionPendingOperationsSpec.groovy
 delete mode 100644 grails-databinding-core/src/main/groovy/grails/databinding/FrameworkPropertyNames.java
 create mode 100644 grails-databinding/src/main/groovy/org/grails/plugins/databinding/DataBindingConfiguration.java
 rename grails-databinding/src/main/resources/META-INF/{additional-spring-configuration-metadata.json => spring-configuration-metadata.json} (83%)
 create mode 100644 grails-databinding/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
 delete mode 100644 grails-datamapping-async/src/test/groovy/grails/gorm/async/AsyncEntitySpec.groovy
 delete mode 100644 grails-datamapping-async/src/test/groovy/org/grails/datastore/gorm/async/AsyncQuerySpec.groovy
 delete mode 100644 grails-datamapping-async/src/test/groovy/org/grails/datastore/gorm/async/GormAsyncStaticApiSpec.groovy
 delete mode 100644 grails-datamapping-core-test/src/test/groovy/grails/gorm/tests/ConnectionScopeMultiTenancySpec.groovy
 delete mode 100644 grails-datamapping-core/src/main/groovy/org/apache/grails/datamapping/aot/GormRuntimeHints.java
 delete mode 100644 grails-datamapping-core/src/main/groovy/org/grails/compiler/gorm/LocalTransformationSupport.groovy
 delete mode 100644 grails-datamapping-core/src/main/groovy/org/grails/datastore/gorm/internal/RefreshLockArguments.groovy
 create mode 100644 grails-datamapping-core/src/main/groovy/org/grails/datastore/gorm/jdbc/OriginCapablePropertyValue.java
 rename grails-converters/src/test/groovy/org/grails/web/converters/beans/PackagePrivateJavaPerson.java => grails-datamapping-core/src/main/groovy/org/grails/datastore/gorm/jdbc/PropertyOrigin.java (65%)
 delete mode 100644 grails-datamapping-core/src/main/groovy/org/grails/datastore/gorm/query/transform/GlobalGormQuerySafetyASTTransformation.java
 delete mode 100644 grails-datamapping-core/src/main/groovy/org/grails/datastore/gorm/query/transform/GormQuerySafetyTransformer.java
 delete mode 100644 grails-datamapping-core/src/main/resources/META-INF/spring/aot.factories
 delete mode 100644 grails-datamapping-core/src/test/groovy/com/IgnoredPackageEntity.groovy
 delete mode 100644 grails-datamapping-core/src/test/groovy/grails/gorm/annotation/multitenancy/MultiTenantCurrentTenantTransformSpec.groovy
 delete mode 100644 grails-datamapping-core/src/test/groovy/grails/gorm/annotation/multitenancy/TenantTransformSpec.groovy
 delete mode 100644 grails-datamapping-core/src/test/groovy/grails/gorm/services/ServiceImplementerEdgeCaseSpec.groovy
 delete mode 100644 grails-datamapping-core/src/test/groovy/grails/gorm/services/transform/ServiceTransformClasses.groovy
 delete mode 100644 grails-datamapping-core/src/test/groovy/grails/gorm/services/transform/ServiceTransformSpec.groovy
 delete mode 100644 grails-datamapping-core/src/test/groovy/grails/gorm/transactions/GrailsTransactionAttributeSpec.groovy
 delete mode 100644 grails-datamapping-core/src/test/groovy/grails/gorm/transactions/TransactionRollbackRulePropagationSpec.groovy
 delete mode 100644 grails-datamapping-core/src/test/groovy/org/apache/grails/datamapping/aot/GormRuntimeHintsSpec.groovy
 delete mode 100644 grails-datamapping-core/src/test/groovy/org/grails/compiler/gorm/GormEntityIdentityTypeSpec.groovy
 delete mode 100644 grails-datamapping-core/src/test/groovy/org/grails/datastore/gorm/AbstractGormApiRegistrySpec.groovy
 delete mode 100644 grails-datamapping-core/src/test/groovy/org/grails/datastore/gorm/ActiveSessionDatastoreSelectorSpec.groovy
 delete mode 100644 grails-datamapping-core/src/test/groovy/org/grails/datastore/gorm/DefaultDatastoreSelectorSpec.groovy
 delete mode 100644 grails-datamapping-core/src/test/groovy/org/grails/datastore/gorm/DefaultGormApiFactorySpec.groovy
 delete mode 100644 grails-datamapping-core/src/test/groovy/org/grails/datastore/gorm/GormApiFactorySpec.groovy
 delete mode 100644 grails-datamapping-core/src/test/groovy/org/grails/datastore/gorm/GormApiRegistrySpec.groovy
 delete mode 100644 grails-datamapping-core/src/test/groovy/org/grails/datastore/gorm/GormRegistryConcurrencySpec.groovy
 delete mode 100644 grails-datamapping-core/src/test/groovy/org/grails/datastore/gorm/GormRegistryEntityRegistrationSpec.groovy
 delete mode 100644 grails-datamapping-core/src/test/groovy/org/grails/datastore/gorm/GormRegistryFactorySpec.groovy
 delete mode 100644 grails-datamapping-core/src/test/groovy/org/grails/datastore/gorm/PreferredDatastoreSelectorSpec.groovy
 delete mode 100644 grails-datamapping-core/src/test/groovy/org/grails/datastore/gorm/QualifiedDatastoreSelectorSpec.groovy
 delete mode 100644 grails-datamapping-core/src/test/groovy/org/grails/datastore/gorm/bootstrap/AbstractDatastoreInitializerConfigurationSpec.groovy
 delete mode 100644 grails-datamapping-core/src/test/groovy/org/grails/datastore/gorm/dirty/checking/DirtyCheckCollectionReassignmentSpec.groovy
 delete mode 100644 grails-datamapping-core/src/test/groovy/org/grails/datastore/gorm/events/ConfigurableApplicationContextEventPublisherSpec.groovy
 delete mode 100644 grails-datamapping-core/src/test/groovy/org/grails/datastore/gorm/internal/RefreshLockArgumentsSpec.groovy
 delete mode 100644 grails-datamapping-core/src/test/groovy/org/grails/datastore/gorm/jdbc/DatabaseDriverSpec.groovy
 delete mode 100644 grails-datamapping-core/src/test/groovy/org/grails/datastore/gorm/jdbc/MultiTenantDataSourceSpec.groovy
 delete mode 100644 grails-datamapping-core/src/test/groovy/org/grails/datastore/gorm/jdbc/RelaxedConversionServiceSpec.groovy
 delete mode 100644 grails-datamapping-core/src/test/groovy/org/grails/datastore/gorm/jdbc/RelaxedDataBinderSpec.groovy
 delete mode 100644 grails-datamapping-core/src/test/groovy/org/grails/datastore/gorm/jdbc/RelaxedNamesSpec.groovy
 delete mode 100644 grails-datamapping-core/src/test/groovy/org/grails/datastore/gorm/jdbc/connections/CachedDataSourceConnectionSourceFactorySpec.groovy
 delete mode 100644 grails-datamapping-core/src/test/groovy/org/grails/datastore/gorm/jdbc/connections/DataSourceConnectionSourceFactorySpec.groovy
 delete mode 100644 grails-datamapping-core/src/test/groovy/org/grails/datastore/gorm/jdbc/connections/DataSourceConnectionSourceSpec.groovy
 delete mode 100644 grails-datamapping-core/src/test/groovy/org/grails/datastore/gorm/jdbc/connections/DataSourceSettingsBuilderSpec.groovy
 delete mode 100644 grails-datamapping-core/src/test/groovy/org/grails/datastore/gorm/jdbc/connections/DataSourceSettingsSpec.groovy
 delete mode 100644 grails-datamapping-core/src/test/groovy/org/grails/datastore/gorm/jdbc/connections/SpringDataSourceConnectionSourceFactorySpec.groovy
 delete mode 100644 grails-datamapping-core/src/test/groovy/org/grails/datastore/gorm/query/transform/DetachedCriteriaASTTransformationSpec.groovy
 delete mode 100644 grails-datamapping-core/src/test/groovy/org/grails/datastore/gorm/query/transform/GlobalGormQuerySafetyASTTransformationSpec.groovy
 delete mode 100644 grails-datamapping-core/src/test/groovy/org/grails/datastore/gorm/query/transform/GormQuerySafetyTransformerSpec.groovy
 delete mode 100644 grails-datamapping-core/src/test/groovy/org/grails/datastore/gorm/query/transform/WhereQueryAggregateSubqueryErrorSpec.groovy
 delete mode 100644 grails-datamapping-core/src/test/groovy/org/grails/datastore/gorm/query/transform/WhereQueryAssociationPathSpec.groovy
 delete mode 100644 grails-datamapping-core/src/test/groovy/org/grails/datastore/gorm/query/transform/WhereQueryDetachedCriteriaCastSpec.groovy
 delete mode 100644 grails-datamapping-core/src/test/groovy/org/grails/datastore/gorm/query/transform/WhereQueryEmbeddedPropertyPathSpec.groovy
 delete mode 100644 grails-datamapping-core/src/test/groovy/org/grails/datastore/gorm/query/transform/WhereQueryFunctionCallSpec.groovy
 delete mode 100644 grails-datamapping-core/src/test/groovy/org/grails/datastore/gorm/query/transform/WhereQueryMultiLevelAssociationFunctionSpec.groovy
 delete mode 100644 grails-datamapping-core/src/test/groovy/org/grails/datastore/gorm/query/transform/WhereQueryNegationSpec.groovy
 delete mode 100644 grails-datamapping-core/src/test/groovy/org/grails/datastore/gorm/query/transform/WhereQueryOperatorSpec.groovy
 delete mode 100644 grails-datamapping-core/src/test/groovy/org/grails/datastore/gorm/query/transform/WhereQueryPropertyAliasSpec.groovy
 delete mode 100644 grails-datamapping-core/src/test/groovy/org/grails/datastore/gorm/query/transform/WhereQueryStaticFieldSpec.groovy
 delete mode 100644 grails-datamapping-core/src/test/groovy/org/grails/datastore/gorm/services/transform/ServiceTransformationSpec.groovy
 delete mode 100644 grails-datamapping-core/src/test/groovy/org/grails/datastore/gorm/services/transform/support/AdaptedProbeServiceImplementer.groovy
 delete mode 100644 grails-datamapping-core/src/test/groovy/org/grails/datastore/gorm/services/transform/support/NoOpServiceImplementerAdapter.groovy
 delete mode 100644 grails-datamapping-core/src/test/groovy/org/grails/datastore/gorm/services/transform/support/ProbeServiceImplementer.groovy
 delete mode 100644 grails-datamapping-core/src/test/groovy/org/grails/datastore/gorm/services/transform/support/ProbeServiceImplementerAdapter.groovy
 delete mode 100644 grails-datamapping-core/src/test/groovy/org/grails/datastore/gorm/transform/AbstractGormASTTransformationSpec.groovy
 delete mode 100644 grails-datamapping-core/src/test/groovy/org/grails/datastore/gorm/transform/AbstractTraitApplyingGormASTTransformationSpec.groovy
 delete mode 100644 grails-datamapping-core/src/test/groovy/org/grails/datastore/gorm/transform/ApplyNonCompilationUnitAwareTransform.java
 delete mode 100644 grails-datamapping-core/src/test/groovy/org/grails/datastore/gorm/transform/ApplyTestTraitWeaving.java
 delete mode 100644 grails-datamapping-core/src/test/groovy/org/grails/datastore/gorm/transform/ApplyUnloadableGormTransform.java
 delete mode 100644 grails-datamapping-core/src/test/groovy/org/grails/datastore/gorm/transform/AstPropertyResolveUtilsSpec.groovy
 delete mode 100644 grails-datamapping-core/src/test/groovy/org/grails/datastore/gorm/transform/DoubleGenericTestTrait.groovy
 delete mode 100644 grails-datamapping-core/src/test/groovy/org/grails/datastore/gorm/transform/NonCompilationUnitAwareTestTransformation.groovy
 delete mode 100644 grails-datamapping-core/src/test/groovy/org/grails/datastore/gorm/transform/OrderedGormTransformationSpec.groovy
 delete mode 100644 grails-datamapping-core/src/test/groovy/org/grails/datastore/gorm/transform/SingleGenericTestTrait.groovy
 delete mode 100644 grails-datamapping-core/src/test/groovy/org/grails/datastore/gorm/transform/TestTraitWeavingTransformation.groovy
 delete mode 100644 grails-datamapping-core/src/test/groovy/org/grails/datastore/gorm/transform/TestWeavableTrait.groovy
 delete mode 100644 grails-datamapping-core/src/test/groovy/org/grails/datastore/gorm/utils/ReflectionUtilsSpec.groovy
 delete mode 100644 grails-datamapping-core/src/test/groovy/org/grails/datastore/gorm/validation/constraints/MappingContextAwareConstraintFactorySpec.groovy
 delete mode 100644 grails-datamapping-core/src/test/groovy/org/grails/datastore/gorm/validation/jakarta/ConfigurableParameterNameProviderSpec.groovy
 delete mode 100644 grails-datamapping-core/src/test/groovy/org/grails/datastore/gorm/validation/jakarta/ConstraintViolationUtilsSpec.groovy
 delete mode 100644 grails-datamapping-core/src/test/groovy/org/grails/datastore/gorm/validation/jakarta/GormValidatorFactoryAdapterSpec.groovy
 delete mode 100644 grails-datamapping-core/src/test/groovy/org/grails/datastore/gorm/validation/jakarta/JakartaValidatorRegistrySpec.groovy
 delete mode 100644 grails-datamapping-core/src/test/groovy/org/grails/datastore/gorm/validation/jakarta/MethodKeySpec.groovy
 delete mode 100644 grails-datamapping-core/src/test/groovy/org/grails/datastore/gorm/validation/listener/ValidationEventListenerSpec.groovy
 delete mode 100644 grails-datamapping-core/src/test/groovy/org/grails/datastore/gorm/validation/registry/support/ValidatorRegistriesSpec.groovy
 delete mode 100644 grails-datamapping-core/src/test/resources/META-INF/services/org.grails.datastore.gorm.services.ServiceImplementer
 delete mode 100644 grails-datamapping-core/src/test/resources/META-INF/services/org.grails.datastore.gorm.services.ServiceImplementerAdapter
 delete mode 100644 grails-datamapping-validation/src/main/groovy/org/apache/grails/datamapping/validation/aot/ConstrainedPropertyRuntimeHints.java
 delete mode 100644 grails-datamapping-validation/src/main/resources/META-INF/spring/aot.factories
 delete mode 100644 grails-datamapping-validation/src/test/groovy/org/apache/grails/datamapping/validation/aot/ConstrainedPropertyRuntimeHintsSpec.groovy
 rename grails-datastore-core/src/main/groovy/org/grails/datastore/mapping/core/{TransactionSynchronizationSessionResolver.groovy => ThreadLocalSessionResolver.groovy} (56%)
 delete mode 100644 grails-datastore-core/src/main/groovy/org/grails/datastore/mapping/core/connections/SingleSessionCapableDatastore.java
 delete mode 100644 grails-datastore-core/src/main/groovy/org/grails/datastore/mapping/reflect/DevToolsClassLoaders.java
 create mode 100644 grails-datastore-core/src/test/groovy/org/grails/datastore/mapping/core/ThreadLocalSessionResolverSpec.groovy
 delete mode 100644 grails-datastore-core/src/test/groovy/org/grails/datastore/mapping/core/TransactionSynchronizationSessionResolverSpec.groovy
 delete mode 100644 grails-datastore-core/src/test/groovy/org/grails/datastore/mapping/dirty/checking/DirtyCheckingCollectionSpec.groovy
 delete mode 100644 grails-datastore-core/src/test/groovy/org/grails/datastore/mapping/document/config/DocumentMappingContextSpec.groovy
 create mode 100644 grails-datastore-core/src/test/groovy/org/grails/datastore/mapping/model/AbstractPersistentEntityGetTenantIdSpec.groovy
 delete mode 100644 grails-datastore-core/src/test/groovy/org/grails/datastore/mapping/reflect/DevToolsClassLoadersSpec.groovy
 delete mode 100644 grails-datastore-core/src/test/groovy/org/grails/datastore/mapping/transactions/DatastoreTransactionManagerSpec.groovy
 delete mode 100644 grails-datastore-core/src/test/groovy/org/grails/datastore/mapping/transactions/SessionOnlyTransactionSpec.groovy
 delete mode 100644 grails-datastore-core/src/test/resources/logback-test.xml
 delete mode 100644 grails-doc/src/en/guide/GORM/multiTenancy.adoc
 delete mode 100644 grails-doc/src/en/guide/backgroundJobs.adoc
 delete mode 100644 grails-doc/src/en/guide/backgroundJobs/backgroundJobsAdvanced.adoc
 delete mode 100644 grails-doc/src/en/guide/backgroundJobs/backgroundJobsAdvanced/quartzClustering.adoc
 delete mode 100644 grails-doc/src/en/guide/backgroundJobs/backgroundJobsAdvanced/quartzConfiguration.adoc
 delete mode 100644 grails-doc/src/en/guide/backgroundJobs/backgroundJobsAdvanced/quartzDynamicScheduling.adoc
 delete mode 100644 grails-doc/src/en/guide/backgroundJobs/backgroundJobsAdvanced/quartzInstallation.adoc
 delete mode 100644 grails-doc/src/en/guide/backgroundJobs/backgroundJobsAdvanced/quartzJobManagerService.adoc
 delete mode 100644 grails-doc/src/en/guide/backgroundJobs/backgroundJobsAdvanced/quartzJobProperties.adoc
 delete mode 100644 grails-doc/src/en/guide/backgroundJobs/backgroundJobsAdvanced/quartzLongRunningJobs.adoc
 delete mode 100644 grails-doc/src/en/guide/backgroundJobs/backgroundJobsAdvanced/quartzScheduling.adoc
 delete mode 100644 grails-doc/src/en/guide/backgroundJobs/backgroundJobsAdvanced/quartzTriggers.adoc
 delete mode 100644 grails-doc/src/en/guide/backgroundJobs/backgroundJobsAdvanced/quartzUsefulLinks.adoc
 delete mode 100644 grails-doc/src/en/guide/backgroundJobs/backgroundJobsBasic.adoc
 delete mode 100644 grails-doc/src/en/guide/deployment/deploymentAot.adoc
 delete mode 100644 grails-doc/src/en/guide/deployment/deploymentAotCache.adoc
 delete mode 100644 grails-doc/src/en/guide/testing/testingMongodb.adoc
 delete mode 100644 grails-doc/src/en/guide/theWebLayer/gsp/gspInSpringBoot.adoc
 delete mode 100644 grails-doc/src/en/guide/theWebLayer/gsp/gspStaticCompilation.adoc
 delete mode 100644 grails-doc/src/en/guide/theWebLayer/gsp/taglibs/compiledTags.adoc
 delete mode 100644 grails-doc/src/en/ref/Triggers.adoc
 delete mode 100644 grails-doc/src/en/ref/Triggers/cron.adoc
 delete mode 100644 grails-doc/src/en/ref/Triggers/custom.adoc
 delete mode 100644 grails-doc/src/en/ref/Triggers/simple.adoc
 delete mode 100644 grails-domain-class/src/main/groovy/org/grails/plugins/domain/DomainClassEnvironmentPostProcessor.groovy
 copy grails-domain-class/src/main/groovy/org/grails/plugins/domain/{DomainClassGrailsPlugin.groovy => GrailsDomainClassAutoConfiguration.groovy} (51%)
 delete mode 100644 grails-domain-class/src/main/resources/META-INF/spring.factories
 delete mode 100644 grails-domain-class/src/test/groovy/org/grails/plugins/domain/AutoTimestampCacheDefaultSpec.groovy
 create mode 100644 grails-domain-class/src/test/groovy/org/grails/plugins/domain/DomainClassGrailsPluginSpec.groovy
 delete mode 100644 grails-encoder/src/test/groovy/org/grails/encoder/CodecMetaClassSupportSpec.groovy
 delete mode 100644 grails-forge/docs/aws-elastic-beanstalk.md
 mode change 100755 => 100644 grails-forge/gradlew.bat
 create mode 100644 grails-forge/grails-forge-api/src/main/java/org/grails/forge/api/create/github/GitHubCreateController.java
 create mode 100644 grails-forge/grails-forge-api/src/main/java/org/grails/forge/api/create/github/GitHubCreateDTO.java
 create mode 100644 grails-forge/grails-forge-api/src/main/java/org/grails/forge/api/create/github/GitHubCreateOperation.java
 create mode 100644 grails-forge/grails-forge-api/src/main/java/org/grails/forge/api/create/github/GitHubCreateService.java
 create mode 100644 grails-forge/grails-forge-api/src/main/java/org/grails/forge/api/create/github/GitHubRedirectService.java
 create mode 100644 grails-forge/grails-forge-api/src/main/resources/META-INF/native-image/org.grails.forge.api/grails-forge-api/native-image.properties
 delete mode 100644 grails-forge/grails-forge-api/src/test/groovy/org/grails/forge/api/GrailsForgeConfigurationSpec.groovy
 create mode 100644 grails-forge/grails-forge-api/src/test/groovy/org/grails/forge/api/create/github/GitHubApiMockedController.groovy
 create mode 100644 grails-forge/grails-forge-api/src/test/groovy/org/grails/forge/api/create/github/GitHubCreateControllerSpec.groovy
 create mode 100644 grails-forge/grails-forge-api/src/test/groovy/org/grails/forge/api/create/github/GitHubOauthMockedController.groovy
 create mode 100644 grails-forge/grails-forge-core/src/main/java/org/grails/forge/client/github/oauth/AccessToken.java
 rename grails-core/src/cli/groovy/org/apache/grails/core/cli/ApplicationCommandFactoryKeyProvider.groovy => grails-forge/grails-forge-core/src/main/java/org/grails/forge/client/github/oauth/GitHubOAuthClient.java (58%)
 rename grails-async/core/src/main/groovy/org/grails/async/factory/future/VirtualThreadPromiseFactory.groovy => grails-forge/grails-forge-core/src/main/java/org/grails/forge/client/github/oauth/GitHubOAuthOperations.java (58%)
 rename grails-data-neo4j/core/src/main/groovy/grails/neo4j/services/Cypher.groovy => grails-forge/grails-forge-core/src/main/java/org/grails/forge/client/github/v3/GitHubApiClient.java (56%)
 create mode 100644 grails-forge/grails-forge-core/src/main/java/org/grails/forge/client/github/v3/GitHubApiOperations.java
 create mode 100644 grails-forge/grails-forge-core/src/main/java/org/grails/forge/client/github/v3/GitHubRepository.java
 create mode 100644 grails-forge/grails-forge-core/src/main/java/org/grails/forge/client/github/v3/GitHubSecret.java
 rename grails-converters/src/test/groovy/org/grails/web/converters/beans/PackagePrivateGroovyPerson.groovy => grails-forge/grails-forge-core/src/main/java/org/grails/forge/client/github/v3/GitHubSecretsPublicKey.java (55%)
 create mode 100644 grails-forge/grails-forge-core/src/main/java/org/grails/forge/client/github/v3/GitHubUser.java
 create mode 100644 grails-forge/grails-forge-core/src/main/java/org/grails/forge/client/github/v3/GitHubWorkflowRun.java
 rename grails-data-neo4j/core/src/main/groovy/grails/neo4j/Direction.groovy => grails-forge/grails-forge-core/src/main/java/org/grails/forge/client/github/v3/GitHubWorkflowRuns.java (51%)
 delete mode 100644 grails-forge/grails-forge-core/src/main/java/org/grails/forge/feature/database/AsyncGorm.java
 delete mode 100644 grails-forge/grails-forge-core/src/main/java/org/grails/forge/feature/database/MongoDBTestingSupport.java
 delete mode 100644 grails-forge/grails-forge-core/src/main/java/org/grails/forge/feature/database/MongoDBTestingSupportValidator.java
 delete mode 100644 grails-forge/grails-forge-core/src/main/java/org/grails/forge/feature/database/Neo4jGorm.java
 delete mode 100644 grails-forge/grails-forge-core/src/main/java/org/grails/forge/feature/logging/LogbackConfig.java
 create mode 100644 grails-forge/grails-forge-core/src/main/java/org/grails/forge/feature/security/template/securityConfig.rocker.raw
 create mode 100644 grails-forge/grails-forge-core/src/main/java/org/grails/forge/util/GitHubUtil.java
 mode change 100755 => 100644 grails-forge/grails-forge-core/src/main/resources/gradle/gradlew.bat
 delete mode 100644 grails-forge/grails-forge-core/src/test/groovy/org/grails/forge/ActiveProcessorCountForkSpec.groovy
 delete mode 100644 grails-forge/grails-forge-core/src/test/groovy/org/grails/forge/feature/database/AsyncGormSpec.groovy
 delete mode 100644 grails-forge/grails-forge-core/src/test/groovy/org/grails/forge/feature/database/MongoDBTestingSupportSpec.groovy
 delete mode 100644 grails-forge/grails-forge-core/src/test/groovy/org/grails/forge/feature/database/Neo4JGormSpec.groovy
 delete mode 100644 grails-forge/grails-forge-core/src/test/groovy/org/grails/forge/feature/grails/GrailsUrlMappingsSpec.groovy
 delete mode 100644 grails-forge/grails-forge-web-netty/aws/.platform/nginx/conf.d/proxy.conf
 delete mode 100644 grails-forge/grails-forge-web-netty/aws/Procfile
 delete mode 100644 grails-forge/grails-forge-web-netty/aws/start.sh
 create mode 100644 grails-forge/grails-forge-web-netty/src/main/resources/META-INF/native-image/org.grails.forge/grails-forge-web-netty/reflect-config.json
 delete mode 100644 grails-forge/infrastructure/README.md
 delete mode 100644 grails-forge/infrastructure/environment.yaml
 delete mode 100644 grails-forge/infrastructure/shared.yaml
 delete mode 100644 grails-geb/src/test/groovy/grails/plugin/geb/GebRecordingTestListenerSpec.groovy
 delete mode 100644 grails-geb/src/test/groovy/grails/plugin/geb/WebDriverContainerHolderSpec.groovy
 delete mode 100644 grails-gradle/common/src/main/groovy/org/apache/grails/gradle/common/XmlParserFeature.java
 delete mode 100644 grails-gradle/common/src/test/groovy/org/apache/grails/gradle/common/XmlParserFeatureSpec.groovy
 delete mode 100644 grails-gradle/model/src/test/groovy/org/grails/io/support/SpringIOUtilsSpec.groovy
 delete mode 100644 grails-gradle/plugins/src/main/groovy/org/apache/grails/gradle/plugin/aot/AotCacheExtension.groovy
 delete mode 100644 grails-gradle/plugins/src/main/groovy/org/apache/grails/gradle/plugin/aot/ExtractApplicationTask.groovy
 delete mode 100644 grails-gradle/plugins/src/main/groovy/org/apache/grails/gradle/plugin/aot/GenerateNativeMetadataTask.groovy
 delete mode 100644 grails-gradle/plugins/src/main/groovy/org/apache/grails/gradle/plugin/aot/NativeMetadataExtension.groovy
 delete mode 100644 grails-gradle/plugins/src/main/groovy/org/apache/grails/gradle/plugin/aot/RunPort.groovy
 delete mode 100644 grails-gradle/plugins/src/main/groovy/org/apache/grails/gradle/plugin/aot/StartupLog.groovy
 delete mode 100644 grails-gradle/plugins/src/main/groovy/org/apache/grails/gradle/plugin/aot/TraceNativeMetadataTask.groovy
 delete mode 100644 grails-gradle/plugins/src/main/groovy/org/apache/grails/gradle/plugin/aot/TrainAotCacheTask.groovy
 delete mode 100644 grails-gradle/plugins/src/main/groovy/org/grails/gradle/plugin/core/AutoConfigurationImportsCompileInput.groovy
 delete mode 100644 grails-gradle/plugins/src/main/groovy/org/grails/gradle/plugin/core/GrailsCompilerConfigScriptTask.groovy
 delete mode 100644 grails-gradle/plugins/src/main/groovy/org/grails/gradle/plugin/core/GrailsGormIdTypeProvider.groovy
 delete mode 100644 grails-gradle/plugins/src/main/groovy/org/grails/gradle/plugin/core/GrailsGormOptions.groovy
 delete mode 100644 grails-gradle/plugins/src/main/groovy/org/grails/gradle/plugin/core/GrailsGspCompileStaticProvider.groovy
 delete mode 100644 grails-gradle/plugins/src/main/groovy/org/grails/gradle/plugin/core/GrailsI18nOptions.groovy
 delete mode 100644 grails-gradle/plugins/src/main/groovy/org/grails/gradle/plugin/i18n/GenerateI18nDescriptorTask.groovy
 delete mode 100644 grails-gradle/plugins/src/main/groovy/org/grails/gradle/plugin/i18n/I18nBundleIndex.groovy
 delete mode 100644 grails-gradle/plugins/src/main/groovy/org/grails/gradle/plugin/scaffolding/GenerateScaffoldedViewsTask.groovy
 delete mode 100644 grails-gradle/plugins/src/main/groovy/org/grails/gradle/plugin/views/gsp/GenerateTagLibraryIndexTask.groovy
 delete mode 100644 grails-gradle/plugins/src/main/groovy/org/grails/gradle/plugin/views/gsp/TagLibraryIndexFiles.groovy
 delete mode 100644 grails-gradle/plugins/src/test/groovy/org/apache/grails/gradle/plugin/aot/ExtractApplicationTaskSpec.groovy
 delete mode 100644 grails-gradle/plugins/src/test/groovy/org/apache/grails/gradle/plugin/aot/GenerateNativeMetadataTaskSpec.groovy
 delete mode 100644 grails-gradle/plugins/src/test/groovy/org/apache/grails/gradle/plugin/aot/RunPortSpec.groovy
 delete mode 100644 grails-gradle/plugins/src/test/groovy/org/apache/grails/gradle/plugin/aot/StartupLogSpec.groovy
 delete mode 100644 grails-gradle/plugins/src/test/groovy/org/apache/grails/gradle/plugin/aot/TraceNativeMetadataTaskSpec.groovy
 delete mode 100644 grails-gradle/plugins/src/test/groovy/org/apache/grails/gradle/plugin/aot/TracedRunFixture.groovy
 delete mode 100644 grails-gradle/plugins/src/test/groovy/org/apache/grails/gradle/plugin/aot/TrainAotCacheTaskSpec.groovy
 delete mode 100644 grails-gradle/plugins/src/test/groovy/org/apache/grails/gradle/plugin/aot/TrainingRunFixture.groovy
 delete mode 100644 grails-gradle/plugins/src/test/groovy/org/grails/gradle/plugin/commands/LegacyCommandTaskDiscoverySpec.groovy
 delete mode 100644 grails-gradle/plugins/src/test/groovy/org/grails/gradle/plugin/commands/PluginScriptCommandPackagingSpec.groovy
 delete mode 100644 grails-gradle/plugins/src/test/groovy/org/grails/gradle/plugin/core/ActiveProcessorCountForkSpec.groovy
 delete mode 100644 grails-gradle/plugins/src/test/groovy/org/grails/gradle/plugin/core/AssetClasspathPackagingSpec.groovy
 delete mode 100644 grails-gradle/plugins/src/test/groovy/org/grails/gradle/plugin/core/AutoConfigurationImportsInputSpec.groovy
 delete mode 100644 grails-gradle/plugins/src/test/groovy/org/grails/gradle/plugin/core/GormDefaultIdTypeFunctionalSpec.groovy
 delete mode 100644 grails-gradle/plugins/src/test/groovy/org/grails/gradle/plugin/core/GrailsGormIdTypeProviderSpec.groovy
 delete mode 100644 grails-gradle/plugins/src/test/groovy/org/grails/gradle/plugin/core/GrailsGroovyCompilerConfigSpec.groovy
 delete mode 100644 grails-gradle/plugins/src/test/groovy/org/grails/gradle/plugin/core/GrailsGspCompileStaticProviderSpec.groovy
 delete mode 100644 grails-gradle/plugins/src/test/groovy/org/grails/gradle/plugin/core/GrailsNativeImageDefaultsSpec.groovy
 delete mode 100644 grails-gradle/plugins/src/test/groovy/org/grails/gradle/plugin/core/GrailsWebDaemonReuseFunctionalSpec.groovy
 delete mode 100644 grails-gradle/plugins/src/test/groovy/org/grails/gradle/plugin/core/TestPhasesGradlePluginSpec.groovy
 delete mode 100644 grails-gradle/plugins/src/test/groovy/org/grails/gradle/plugin/i18n/GenerateI18nDescriptorTaskSpec.groovy
 delete mode 100644 grails-gradle/plugins/src/test/groovy/org/grails/gradle/plugin/i18n/I18nBundleIndexSpec.groovy
 delete mode 100644 grails-gradle/plugins/src/test/groovy/org/grails/gradle/plugin/i18n/I18nDescriptorFunctionalSpec.groovy
 delete mode 100644 grails-gradle/plugins/src/test/groovy/org/grails/gradle/plugin/scaffolding/GenerateScaffoldedViewsTaskSpec.groovy
 delete mode 100644 grails-gradle/plugins/src/test/groovy/org/grails/gradle/plugin/views/gsp/GenerateTagLibraryIndexTaskSpec.groovy
 delete mode 100644 grails-gradle/plugins/src/test/groovy/org/grails/gradle/plugin/views/gsp/GroovyPagePluginFunctionalSpec.groovy
 delete mode 100644 grails-gradle/plugins/src/test/groovy/org/grails/gradle/plugin/views/gsp/GroovyPageToolchainSpec.groovy
 delete mode 100644 grails-gradle/plugins/src/test/groovy/org/grails/gradle/plugin/views/gsp/TagLibraryIndexFilesSpec.groovy
 delete mode 100644 grails-gradle/plugins/src/test/groovy/org/grails/gradle/plugin/views/gsp/TagLibraryIndexWiringFunctionalSpec.groovy
 delete mode 100644 grails-gradle/plugins/src/test/resources/test-projects/asset-classpath-packaging/build.gradle
 delete mode 100644 grails-gradle/plugins/src/test/resources/test-projects/asset-classpath-packaging/gradle.properties
 delete mode 100644 grails-gradle/plugins/src/test/resources/test-projects/asset-classpath-packaging/settings.gradle
 create mode 100644 grails-gradle/plugins/src/test/resources/test-projects/bom-platform-hibernate7-micronaut-auto/build.gradle
 rename grails-gradle/plugins/src/test/resources/test-projects/{compiler-config-classpath-decoupling => bom-platform-hibernate7-micronaut-auto}/gradle.properties (100%)
 create mode 100644 grails-gradle/plugins/src/test/resources/test-projects/bom-platform-hibernate7-micronaut-auto/settings.gradle
 create mode 100644 grails-gradle/plugins/src/test/resources/test-projects/bom-platform-hibernate7-micronaut-manual/build.gradle
 rename grails-gradle/plugins/src/test/resources/test-projects/{compiler-config-generated-user-script-execution => bom-platform-hibernate7-micronaut-manual}/gradle.properties (100%)
 create mode 100644 grails-gradle/plugins/src/test/resources/test-projects/bom-platform-hibernate7-micronaut-manual/settings.gradle
 delete mode 100644 grails-gradle/plugins/src/test/resources/test-projects/cli-companion-autodiscovery/included-digit-bearing-plugin/build.gradle
 delete mode 100644 grails-gradle/plugins/src/test/resources/test-projects/cli-companion-autodiscovery/included-digit-bearing-plugin/my-plugin-2fa-one/build.gradle
 delete mode 100644 grails-gradle/plugins/src/test/resources/test-projects/cli-companion-autodiscovery/included-digit-bearing-plugin/my-plugin-2fa-snapshot/build.gradle
 delete mode 100644 grails-gradle/plugins/src/test/resources/test-projects/cli-companion-autodiscovery/included-digit-bearing-plugin/my-plugin-2fa-timestamp/build.gradle
 delete mode 100644 grails-gradle/plugins/src/test/resources/test-projects/cli-companion-autodiscovery/included-digit-bearing-plugin/my-plugin-2fa-unspecified/build.gradle
 delete mode 100644 grails-gradle/plugins/src/test/resources/test-projects/cli-companion-autodiscovery/included-digit-bearing-plugin/settings.gradle
 delete mode 100644 grails-gradle/plugins/src/test/resources/test-projects/compiler-config-classpath-decoupling/app/build.gradle
 delete mode 100644 grails-gradle/plugins/src/test/resources/test-projects/compiler-config-classpath-decoupling/build.gradle
 delete mode 100644 grails-gradle/plugins/src/test/resources/test-projects/compiler-config-classpath-decoupling/producer/build.gradle
 delete mode 100644 grails-gradle/plugins/src/test/resources/test-projects/compiler-config-classpath-decoupling/runtime-only-producer/build.gradle
 delete mode 100644 grails-gradle/plugins/src/test/resources/test-projects/compiler-config-classpath-decoupling/settings.gradle
 delete mode 100644 grails-gradle/plugins/src/test/resources/test-projects/compiler-config-generated-user-script-execution/build.gradle
 delete mode 100644 grails-gradle/plugins/src/test/resources/test-projects/compiler-config-generated-user-script-execution/settings.gradle
 delete mode 100644 grails-gradle/plugins/src/test/resources/test-projects/compiler-config-generated-user-script-execution/src/main/groovy/example/ConfiguredType.groovy
 delete mode 100644 grails-gradle/plugins/src/test/resources/test-projects/compiler-config-generated-user-script/build.gradle
 delete mode 100644 grails-gradle/plugins/src/test/resources/test-projects/compiler-config-generated-user-script/gradle.properties
 delete mode 100644 grails-gradle/plugins/src/test/resources/test-projects/compiler-config-generated-user-script/settings.gradle
 delete mode 100644 grails-gradle/plugins/src/test/resources/test-projects/compiler-config-incremental/build.gradle
 delete mode 100644 grails-gradle/plugins/src/test/resources/test-projects/compiler-config-incremental/gradle.properties
 delete mode 100644 grails-gradle/plugins/src/test/resources/test-projects/compiler-config-incremental/settings.gradle
 delete mode 100644 grails-gradle/plugins/src/test/resources/test-projects/compiler-config-late-assignment/build.gradle
 delete mode 100644 grails-gradle/plugins/src/test/resources/test-projects/compiler-config-late-assignment/gradle.properties
 delete mode 100644 grails-gradle/plugins/src/test/resources/test-projects/compiler-config-late-assignment/settings.gradle
 delete mode 100644 grails-gradle/plugins/src/test/resources/test-projects/compiler-config-late-assignment/user-config.groovy
 delete mode 100644 grails-gradle/plugins/src/test/resources/test-projects/compiler-config-late-source-set/build.gradle
 delete mode 100644 grails-gradle/plugins/src/test/resources/test-projects/compiler-config-late-source-set/gradle.properties
 delete mode 100644 grails-gradle/plugins/src/test/resources/test-projects/compiler-config-late-source-set/settings.gradle
 delete mode 100644 grails-gradle/plugins/src/test/resources/test-projects/compiler-config-missing-user-script/build.gradle
 delete mode 100644 grails-gradle/plugins/src/test/resources/test-projects/compiler-config-missing-user-script/gradle.properties
 delete mode 100644 grails-gradle/plugins/src/test/resources/test-projects/compiler-config-missing-user-script/settings.gradle
 delete mode 100644 grails-gradle/plugins/src/test/resources/test-projects/compiler-config-plugin-inputs/build.gradle
 delete mode 100644 grails-gradle/plugins/src/test/resources/test-projects/compiler-config-plugin-inputs/gradle.properties
 delete mode 100644 grails-gradle/plugins/src/test/resources/test-projects/compiler-config-plugin-inputs/settings.gradle
 delete mode 100644 grails-gradle/plugins/src/test/resources/test-projects/compiler-config-runtime-classpath-producer/build.gradle
 delete mode 100644 grails-gradle/plugins/src/test/resources/test-projects/compiler-config-runtime-classpath-producer/gradle.properties
 delete mode 100644 grails-gradle/plugins/src/test/resources/test-projects/compiler-config-runtime-classpath-producer/settings.gradle
 delete mode 100644 grails-gradle/plugins/src/test/resources/test-projects/compiler-config-standalone-task/build.gradle
 delete mode 100644 grails-gradle/plugins/src/test/resources/test-projects/compiler-config-standalone-task/gradle.properties
 delete mode 100644 grails-gradle/plugins/src/test/resources/test-projects/compiler-config-standalone-task/settings.gradle
 delete mode 100644 grails-gradle/plugins/src/test/resources/test-projects/compiler-config-standalone-task/user-config.groovy
 delete mode 100644 grails-gradle/plugins/src/test/resources/test-projects/compiler-config-star-imports/build.gradle
 delete mode 100644 grails-gradle/plugins/src/test/resources/test-projects/compiler-config-star-imports/gradle.properties
 delete mode 100644 grails-gradle/plugins/src/test/resources/test-projects/compiler-config-star-imports/settings.gradle
 delete mode 100644 grails-gradle/plugins/src/test/resources/test-projects/gorm-default-id-type-plugin-consumer/app/build.gradle
 delete mode 100644 grails-gradle/plugins/src/test/resources/test-projects/gorm-default-id-type-plugin-consumer/app/grails-app/conf/application.yml
 delete mode 100644 grails-gradle/plugins/src/test/resources/test-projects/gorm-default-id-type-plugin-consumer/build.gradle
 delete mode 100644 grails-gradle/plugins/src/test/resources/test-projects/gorm-default-id-type-plugin-consumer/gradle.properties
 delete mode 100644 grails-gradle/plugins/src/test/resources/test-projects/gorm-default-id-type-plugin-consumer/plugin/build.gradle
 delete mode 100644 grails-gradle/plugins/src/test/resources/test-projects/gorm-default-id-type-plugin-consumer/plugin/src/main/java/example/PortableBook.java
 delete mode 100644 grails-gradle/plugins/src/test/resources/test-projects/gorm-default-id-type-plugin-consumer/settings.gradle
 delete mode 100644 grails-gradle/plugins/src/test/resources/test-projects/gorm-default-id-type/build.gradle
 delete mode 100644 grails-gradle/plugins/src/test/resources/test-projects/gorm-default-id-type/gradle.properties
 delete mode 100644 grails-gradle/plugins/src/test/resources/test-projects/gorm-default-id-type/grails-app/conf/application.yml
 delete mode 100644 grails-gradle/plugins/src/test/resources/test-projects/gorm-default-id-type/settings.gradle
 delete mode 100644 grails-gradle/plugins/src/test/resources/test-projects/gsp-compile-classpath-grails/build.gradle
 delete mode 100644 grails-gradle/plugins/src/test/resources/test-projects/gsp-compile-classpath-grails/gradle.properties
 delete mode 100644 grails-gradle/plugins/src/test/resources/test-projects/gsp-compile-classpath-grails/settings.gradle
 delete mode 100644 grails-gradle/plugins/src/test/resources/test-projects/gsp-compile-classpath/build.gradle
 delete mode 100644 grails-gradle/plugins/src/test/resources/test-projects/gsp-compile-classpath/compile-classpath-marker/marker.txt
 delete mode 100644 grails-gradle/plugins/src/test/resources/test-projects/gsp-compile-classpath/provided-compile-marker/marker.txt
 delete mode 100644 grails-gradle/plugins/src/test/resources/test-projects/gsp-compile-classpath/settings.gradle
 delete mode 100644 grails-gradle/plugins/src/test/resources/test-projects/gsp-compile-static/build.gradle
 delete mode 100644 grails-gradle/plugins/src/test/resources/test-projects/gsp-compile-static/gradle.properties
 delete mode 100644 grails-gradle/plugins/src/test/resources/test-projects/gsp-compile-static/grails-app/conf/application.yml
 delete mode 100644 grails-gradle/plugins/src/test/resources/test-projects/gsp-compile-static/settings.gradle
 delete mode 100644 grails-gradle/plugins/src/test/resources/test-projects/i18n-descriptor-app/build.gradle
 delete mode 100644 grails-gradle/plugins/src/test/resources/test-projects/i18n-descriptor-app/gradle.properties
 delete mode 100644 grails-gradle/plugins/src/test/resources/test-projects/i18n-descriptor-app/grails-app/i18n/api_errors.properties
 delete mode 100644 grails-gradle/plugins/src/test/resources/test-projects/i18n-descriptor-app/grails-app/i18n/messages.properties
 delete mode 100644 grails-gradle/plugins/src/test/resources/test-projects/i18n-descriptor-app/grails-app/i18n/messages_de.properties
 delete mode 100644 grails-gradle/plugins/src/test/resources/test-projects/i18n-descriptor-app/grails-app/i18n/messages_pt_BR.properties
 delete mode 100644 grails-gradle/plugins/src/test/resources/test-projects/i18n-descriptor-app/settings.gradle
 delete mode 100644 grails-gradle/plugins/src/test/resources/test-projects/i18n-descriptor-declared/build.gradle
 delete mode 100644 grails-gradle/plugins/src/test/resources/test-projects/i18n-descriptor-declared/gradle.properties
 delete mode 100644 grails-gradle/plugins/src/test/resources/test-projects/i18n-descriptor-declared/grails-app/i18n/api.properties
 delete mode 100644 grails-gradle/plugins/src/test/resources/test-projects/i18n-descriptor-declared/grails-app/i18n/api_errors.properties
 delete mode 100644 grails-gradle/plugins/src/test/resources/test-projects/i18n-descriptor-declared/settings.gradle
 delete mode 100644 grails-gradle/plugins/src/test/resources/test-projects/i18n-descriptor-plugin-collision/build.gradle
 delete mode 100644 grails-gradle/plugins/src/test/resources/test-projects/i18n-descriptor-plugin-collision/gradle.properties
 delete mode 100644 grails-gradle/plugins/src/test/resources/test-projects/i18n-descriptor-plugin-collision/grails-app/i18n/messages.properties
 delete mode 100644 grails-gradle/plugins/src/test/resources/test-projects/i18n-descriptor-plugin-collision/settings.gradle
 delete mode 100644 grails-gradle/plugins/src/test/resources/test-projects/i18n-descriptor-plugin-collision/src/main/groovy/demo/SpringSecurityDemoGrailsPlugin.groovy
 delete mode 100644 grails-gradle/plugins/src/test/resources/test-projects/i18n-descriptor-plugin/build.gradle
 delete mode 100644 grails-gradle/plugins/src/test/resources/test-projects/i18n-descriptor-plugin/gradle.properties
 delete mode 100644 grails-gradle/plugins/src/test/resources/test-projects/i18n-descriptor-plugin/grails-app/i18n/spring-security-demo-validation.properties
 delete mode 100644 grails-gradle/plugins/src/test/resources/test-projects/i18n-descriptor-plugin/grails-app/i18n/spring-security-demo.properties
 delete mode 100644 grails-gradle/plugins/src/test/resources/test-projects/i18n-descriptor-plugin/grails-app/i18n/spring-security-demo_fr.properties
 delete mode 100644 grails-gradle/plugins/src/test/resources/test-projects/i18n-descriptor-plugin/settings.gradle
 delete mode 100644 grails-gradle/plugins/src/test/resources/test-projects/i18n-descriptor-plugin/src/main/groovy/demo/SpringSecurityDemoGrailsPlugin.groovy
 delete mode 100644 grails-gradle/plugins/src/test/resources/test-projects/legacy-command-discovery/app/build.gradle
 delete mode 100644 grails-gradle/plugins/src/test/resources/test-projects/legacy-command-discovery/gradle.properties
 delete mode 100644 grails-gradle/plugins/src/test/resources/test-projects/legacy-command-discovery/legacy-command-api/build.gradle
 delete mode 100644 grails-gradle/plugins/src/test/resources/test-projects/legacy-command-discovery/legacy-command-api/src/main/java/grails/dev/commands/ExecutionContext.java
 delete mode 100644 grails-gradle/plugins/src/test/resources/test-projects/legacy-command-discovery/legacy-command-plugin/build.gradle
 delete mode 100644 grails-gradle/plugins/src/test/resources/test-projects/legacy-command-discovery/legacy-command-plugin/src/main/groovy/org/example/legacy/HelloLegacyAppCommand.groovy
 delete mode 100644 grails-gradle/plugins/src/test/resources/test-projects/legacy-command-discovery/legacy-command-plugin/src/main/resources/META-INF/grails.factories
 delete mode 100644 grails-gradle/plugins/src/test/resources/test-projects/legacy-command-discovery/settings.gradle
 delete mode 100644 grails-gradle/plugins/src/test/resources/test-projects/native-defaults-aot/build.gradle
 delete mode 100644 grails-gradle/plugins/src/test/resources/test-projects/native-defaults-aot/gradle.properties
 delete mode 100644 grails-gradle/plugins/src/test/resources/test-projects/native-defaults-aot/grails-app/conf/application.yml
 delete mode 100644 grails-gradle/plugins/src/test/resources/test-projects/native-defaults-aot/settings.gradle
 delete mode 100644 grails-gradle/plugins/src/test/resources/test-projects/native-defaults-off/build.gradle
 delete mode 100644 grails-gradle/plugins/src/test/resources/test-projects/native-defaults-off/gradle.properties
 delete mode 100644 grails-gradle/plugins/src/test/resources/test-projects/native-defaults-off/grails-app/conf/application.yml
 delete mode 100644 grails-gradle/plugins/src/test/resources/test-projects/native-defaults-off/settings.gradle
 delete mode 100644 grails-gradle/plugins/src/test/resources/test-projects/native-defaults-on/build.gradle
 delete mode 100644 grails-gradle/plugins/src/test/resources/test-projects/native-defaults-on/gradle.properties
 delete mode 100644 grails-gradle/plugins/src/test/resources/test-projects/native-defaults-on/grails-app/conf/application.yml
 delete mode 100644 grails-gradle/plugins/src/test/resources/test-projects/native-defaults-on/settings.gradle
 delete mode 100644 grails-gradle/plugins/src/test/resources/test-projects/native-metadata-ordering/build.gradle
 delete mode 100644 grails-gradle/plugins/src/test/resources/test-projects/native-metadata-ordering/gradle.properties
 delete mode 100644 grails-gradle/plugins/src/test/resources/test-projects/native-metadata-ordering/grails-app/conf/application.yml
 delete mode 100644 grails-gradle/plugins/src/test/resources/test-projects/native-metadata-ordering/grails-app/views/index.gsp
 delete mode 100644 grails-gradle/plugins/src/test/resources/test-projects/native-metadata-ordering/settings.gradle
 delete mode 100644 grails-gradle/plugins/src/test/resources/test-projects/plugin-script-commands/gradle.properties
 delete mode 100644 grails-gradle/plugins/src/test/resources/test-projects/plugin-script-commands/plugin-with-cli/build.gradle
 delete mode 100644 grails-gradle/plugins/src/test/resources/test-projects/plugin-script-commands/plugin-with-cli/grails-app/views/sample/show.gsp
 delete mode 100644 grails-gradle/plugins/src/test/resources/test-projects/plugin-script-commands/plugin-with-cli/src/main/resources/META-INF/commands/hand-authored.yml
 delete mode 100644 grails-gradle/plugins/src/test/resources/test-projects/plugin-script-commands/plugin-with-cli/src/main/scripts/example-multi-step.yml
 delete mode 100644 grails-gradle/plugins/src/test/resources/test-projects/plugin-script-commands/plugin-with-cli/src/main/scripts/example-script.groovy
 delete mode 100644 grails-gradle/plugins/src/test/resources/test-projects/plugin-script-commands/plugin-with-cli/src/main/templates/example.gsp
 delete mode 100644 grails-gradle/plugins/src/test/resources/test-projects/plugin-script-commands/plugin-with-cli/src/main/templates/example.txt
 delete mode 100644 grails-gradle/plugins/src/test/resources/test-projects/plugin-script-commands/plugin-without-cli/build.gradle
 delete mode 100644 grails-gradle/plugins/src/test/resources/test-projects/plugin-script-commands/plugin-without-cli/src/main/scripts/legacy-only-script.groovy
 delete mode 100644 grails-gradle/plugins/src/test/resources/test-projects/plugin-script-commands/plugin-without-cli/src/main/templates/legacy-only.gsp
 delete mode 100644 grails-gradle/plugins/src/test/resources/test-projects/plugin-script-commands/plugin-without-cli/src/main/templates/legacy-only.txt
 delete mode 100644 grails-gradle/plugins/src/test/resources/test-projects/plugin-script-commands/settings.gradle
 delete mode 100644 grails-gradle/plugins/src/test/resources/test-projects/taglib-index-wiring/build.gradle
 delete mode 100644 grails-gradle/plugins/src/test/resources/test-projects/taglib-index-wiring/settings.gradle
 delete mode 100644 grails-gradle/plugins/src/test/resources/test-projects/web-daemon-reuse/build.gradle
 delete mode 100644 grails-gradle/plugins/src/test/resources/test-projects/web-daemon-reuse/gradle.properties
 delete mode 100644 grails-gradle/plugins/src/test/resources/test-projects/web-daemon-reuse/grails-app/conf/application.yml
 delete mode 100644 grails-gradle/plugins/src/test/resources/test-projects/web-daemon-reuse/settings.gradle
 delete mode 100644 grails-gsp/core/src/main/groovy/org/apache/grails/gsp/aot/PrecompiledPageRuntimeHints.java
 delete mode 100644 grails-gsp/core/src/main/groovy/org/grails/gsp/compiler/PageScopeVariableScanner.java
 delete mode 100644 grails-gsp/core/src/main/resources/META-INF/spring/aot.factories
 delete mode 100644 grails-gsp/core/src/test/groovy/org/apache/grails/gsp/aot/PrecompiledPageRuntimeHintsSpec.groovy
 delete mode 100644 grails-gsp/core/src/test/groovy/org/grails/gsp/GroovyPageMetaInfoReloadSpec.groovy
 delete mode 100644 grails-gsp/core/src/test/groovy/org/grails/gsp/GroovyPageMethodMissingSpec.groovy
 delete mode 100644 grails-gsp/core/src/test/groovy/org/grails/gsp/GroovyPagesTemplateEngineChecksumSpec.groovy
 delete mode 100644 grails-gsp/core/src/test/groovy/org/grails/gsp/GspCompileStaticConfigSpec.groovy
 delete mode 100644 grails-gsp/core/src/test/groovy/org/grails/gsp/compiler/GroovyPageCompilerReproducibilitySpec.groovy
 delete mode 100644 grails-gsp/core/src/test/groovy/org/grails/gsp/compiler/GroovyPageCompilerSpec.groovy
 delete mode 100644 grails-gsp/core/src/test/groovy/org/grails/gsp/compiler/PageScopeVariableScannerSpec.groovy
 delete mode 100644 grails-gsp/core/src/test/groovy/org/grails/gsp/io/DefaultGroovyPageLocatorPrecompiledSpec.groovy
 create mode 100644 grails-gsp/grails-sitemesh3/src/main/groovy/org/grails/plugins/sitemesh3/Sitemesh3AutoConfiguration.groovy
 delete mode 100644 grails-gsp/grails-sitemesh3/src/test/groovy/org/grails/plugins/sitemesh3/GrailsSiteMeshViewResolverServletContextSpec.groovy
 delete mode 100644 grails-gsp/grails-taglib/src/main/groovy/org/grails/taglib/CompiledTagInvocation.java
 delete mode 100644 grails-gsp/grails-taglib/src/main/groovy/org/grails/taglib/discovery/AstTagLibraryView.java
 delete mode 100644 grails-gsp/grails-taglib/src/main/groovy/org/grails/taglib/discovery/AstTagMethodView.java
 delete mode 100644 grails-gsp/grails-taglib/src/main/groovy/org/grails/taglib/discovery/ReflectedTagLibraryView.java
 delete mode 100644 grails-gsp/grails-taglib/src/main/groovy/org/grails/taglib/discovery/ReflectedTagMethodView.java
 delete mode 100644 grails-gsp/grails-taglib/src/main/groovy/org/grails/taglib/discovery/TagDiscoveryRules.java
 delete mode 100644 grails-gsp/grails-taglib/src/main/groovy/org/grails/taglib/discovery/TagLibraryAstDiscovery.java
 delete mode 100644 grails-gsp/grails-taglib/src/main/groovy/org/grails/taglib/discovery/TagLibraryView.java
 delete mode 100644 grails-gsp/grails-taglib/src/main/groovy/org/grails/taglib/discovery/TagMethodView.java
 delete mode 100644 grails-gsp/grails-taglib/src/main/groovy/org/grails/taglib/index/TagLibraryIndex.java
 delete mode 100644 grails-gsp/grails-taglib/src/main/groovy/org/grails/taglib/index/TagLibraryIndexEntry.java
 delete mode 100644 grails-gsp/grails-taglib/src/main/groovy/org/grails/taglib/index/TagLibraryIndexGenerator.java
 delete mode 100644 grails-gsp/grails-taglib/src/main/groovy/org/grails/taglib/index/TagLibraryIndexWriter.java
 delete mode 100644 grails-gsp/grails-taglib/src/test/groovy/org/grails/taglib/index/TagLibraryIndexSpec.groovy
 delete mode 100644 grails-gsp/grails-taglib/src/test/groovy/org/grails/taglib/index/TagLibraryIndexWriterConcurrencySpec.groovy
 delete mode 100644 grails-gsp/grails-web-taglib/src/main/groovy/grails/gsp/taglib/compiler/CompiledTagCallRewriter.java
 delete mode 100644 grails-gsp/grails-web-taglib/src/main/groovy/grails/gsp/taglib/compiler/LocalNameCollector.java
 delete mode 100644 grails-gsp/grails-web-taglib/src/main/groovy/grails/gsp/taglib/compiler/PageBindingCollector.java
 delete mode 100644 grails-gsp/grails-web-taglib/src/test/groovy/org/grails/taglib/discovery/TagDiscoveryRulesSpec.groovy
 delete mode 100644 grails-gsp/grails-web-taglib/src/test/groovy/org/grails/taglib/discovery/TagSetAgreementSpec.groovy
 delete mode 100644 grails-gsp/grails-web-taglib/src/test/groovy/org/grails/taglib/index/SingleIndexProducerSpec.groovy
 delete mode 100644 grails-gsp/grails-web-taglib/src/test/groovy/org/grails/taglib/index/SourceResolvedIndexGeneratorSpec.groovy
 delete mode 100644 grails-gsp/grails-web-taglib/src/test/groovy/org/grails/taglib/index/TagLibraryIndexGeneratorSpec.groovy
 delete mode 100644 grails-gsp/grails-web-taglib/src/test/groovy/org/grails/web/taglib/NoMetaClassMutationSpec.groovy
 delete mode 100644 grails-gsp/grails-web-taglib/src/test/groovy/org/grails/web/taglib/TagLibraryLookupIndexSpec.groovy
 delete mode 100644 grails-gsp/grails-web-taglib/src/test/groovy/org/grails/web/taglib/TagPrecedenceSpec.groovy
 delete mode 100644 grails-gsp/plugin/src/ast/groovy/grails/compiler/traits/CompiledTagCallTransformation.groovy
 delete mode 100644 grails-gsp/plugin/src/ast/resources/META-INF/services/org.codehaus.groovy.transform.ASTTransformation
 delete mode 100644 grails-gsp/plugin/src/main/groovy/org/apache/grails/gsp/taglib/TagLibBeanDefinitionsPostProcessor.groovy
 delete mode 100644 grails-gsp/plugin/src/main/groovy/org/apache/grails/gsp/taglib/aot/TagLibRuntimeHints.java
 delete mode 100644 grails-gsp/plugin/src/main/resources/META-INF/additional-spring-configuration-metadata.json
 create mode 100644 grails-gsp/plugin/src/main/resources/META-INF/spring-configuration-metadata.json
 delete mode 100644 grails-gsp/plugin/src/main/resources/META-INF/spring/aot.factories
 delete mode 100644 grails-gsp/plugin/src/test/groovy/org/apache/grails/gsp/taglib/TagLibBeanDefinitionsPostProcessorSpec.groovy
 delete mode 100644 grails-gsp/plugin/src/test/groovy/org/apache/grails/gsp/taglib/aot/TagLibRuntimeHintsSpec.groovy
 delete mode 100644 grails-gsp/plugin/src/test/groovy/org/grails/gsp/jsp/JstlDocTypeTldSpec.groovy
 delete mode 100644 grails-gsp/plugin/src/test/groovy/org/grails/plugins/web/GroovyPagesGrailsPluginPrecompiledSpec.groovy
 delete mode 100644 grails-gsp/plugin/src/test/groovy/org/grails/web/taglib/CompiledPageTagCallSpec.groovy
 delete mode 100644 grails-gsp/plugin/src/test/groovy/org/grails/web/taglib/CompiledTagCallBytecodeSpec.groovy
 delete mode 100644 grails-gsp/plugin/src/test/groovy/org/grails/web/taglib/CompiledTagCallRewriterSpec.groovy
 delete mode 100644 grails-gsp/plugin/src/test/groovy/org/grails/web/taglib/CompiledTagCallTransformationOrderSpec.groovy
 delete mode 100644 grails-gsp/plugin/src/test/groovy/org/grails/web/taglib/CompiledTagInvocationSpec.groovy
 delete mode 100644 grails-gsp/plugin/src/test/groovy/org/grails/web/taglib/ControllerTagCallRewriteSpec.groovy
 delete mode 100644 grails-gsp/plugin/src/test/groovy/org/grails/web/taglib/GroovyMethodNameCollisionSpec.groovy
 delete mode 100644 grails-gsp/plugin/src/test/groovy/org/grails/web/taglib/GspStaticTagResolutionSpec.groovy
 delete mode 100644 grails-gsp/plugin/src/test/groovy/org/grails/web/taglib/IndexEdgeCaseTagLib.groovy
 delete mode 100644 grails-gsp/plugin/src/test/groovy/org/grails/web/taglib/RewrittenCallsTagLib.groovy
 delete mode 100644 grails-gsp/plugin/src/test/groovy/org/grails/web/taglib/RewrittenPageRenderingSpec.groovy
 delete mode 100644 grails-gsp/plugin/src/test/groovy/org/grails/web/taglib/SameProjectTagResolutionSpec.groovy
 delete mode 100644 grails-gsp/plugin/src/test/groovy/org/grails/web/taglib/TagCallShadowingSpec.groovy
 delete mode 100644 grails-gsp/plugin/src/test/groovy/org/grails/web/taglib/TagLibraryIndexAgreementSpec.groovy
 delete mode 100644 grails-gsp/plugin/src/test/groovy/org/grails/web/taglib/TagLibraryInvokerDispatchSpec.groovy
 delete mode 100644 grails-gsp/plugin/src/test/groovy/org/grails/web/taglib/TypedSetTagSpec.groovy
 delete mode 100644 grails-gsp/spring-boot/src/main/java/grails/gsp/boot/StandaloneGrailsApplicationAwareBeanPostProcessor.java
 delete mode 100644 grails-gsp/spring-boot/src/main/java/grails/gsp/boot/StandaloneGroovyPageViewResolver.java
 delete mode 100644 grails-gsp/spring-boot/src/test/groovy/grails/gsp/boot/GspAutoConfigurationSpec.groovy
 delete mode 100644 grails-gsp/spring-boot/src/test/groovy/grails/gsp/boot/StandaloneGrailsApplicationAwareBeanPostProcessorSpec.groovy
 delete mode 100644 grails-gsp/spring-boot/src/test/groovy/grails/gsp/boot/StandaloneGroovyPageViewResolverSpec.groovy
 delete mode 100644 grails-gsp/spring-boot/src/test/groovy/grails/gsp/boot/StandaloneTagLibraryLookupSpec.groovy
 delete mode 100644 grails-gsp/spring-boot/src/test/groovy/grails/gsp/boot/TagLibraryLookupRegistrarSpec.groovy
 delete mode 100644 grails-gsp/spring-boot/src/test/groovy/grails/gsp/boot/UrlMappingsHolderConfigurationSpec.groovy
 delete mode 100644 grails-gsp/spring-boot/src/test/resources/gsp/views.properties
 delete mode 100644 grails-i18n/src/main/groovy/org/grails/plugins/i18n/EffectiveI18nDescriptors.java
 create mode 100644 grails-i18n/src/main/groovy/org/grails/plugins/i18n/I18nAutoConfiguration.java
 delete mode 100644 grails-i18n/src/main/groovy/org/grails/plugins/i18n/I18nDescriptor.java
 delete mode 100644 grails-i18n/src/main/groovy/org/grails/plugins/i18n/I18nDescriptors.java
 delete mode 100644 grails-i18n/src/main/groovy/org/grails/plugins/i18n/I18nEnvironmentPostProcessor.java
 delete mode 100644 grails-i18n/src/main/groovy/org/grails/plugins/i18n/I18nRuntimeHintsProcessor.java
 delete mode 100644 grails-i18n/src/main/resources/META-INF/spring.factories
 delete mode 100644 grails-i18n/src/main/resources/META-INF/spring/aot.factories
 delete mode 100644 grails-i18n/src/test/groovy/org/grails/plugins/i18n/I18nDescriptorsSpec.groovy
 delete mode 100644 grails-i18n/src/test/groovy/org/grails/plugins/i18n/I18nEnvironmentPostProcessorSpec.groovy
 delete mode 100644 grails-i18n/src/test/groovy/org/grails/plugins/i18n/I18nRuntimeHintsProcessorSpec.groovy
 delete mode 100644 grails-i18n/src/test/groovy/org/grails/plugins/i18n/MessageSourcePrecedenceSpec.groovy
 delete mode 100644 grails-i18n/src/test/groovy/org/grails/plugins/i18n/MessageSourceReloadSpec.groovy
 delete mode 100644 grails-i18n/src/test/resources/META-INF/grails/i18n.properties
 delete mode 100644 grails-i18n/src/test/resources/alpha-plugin.properties
 delete mode 100644 grails-i18n/src/test/resources/beta-plugin.properties
 create mode 100644 grails-mail/src/main/groovy/grails/plugins/mail/MailAutoConfiguration.groovy
 delete mode 100644 grails-mail/src/test/groovy/grails/plugins/mail/MailAutoConfigurationSpec.groovy
 delete mode 100644 grails-mail/src/test/groovy/grails/plugins/mail/PlainTextMailTagLibSpec.groovy
 copy {grails-testing-support-redis => grails-micronaut}/build.gradle (61%)
 create mode 100644 grails-micronaut/src/main/groovy/org/apache/grails/micronaut/GrailsMicronautGrailsPlugin.groovy
 delete mode 100644 grails-mimetypes/src/main/groovy/org/apache/grails/mimetypes/aot/MimeTypeRuntimeHints.java
 delete mode 100644 grails-mimetypes/src/main/resources/META-INF/spring/aot.factories
 create mode 100644 grails-profiles/base/skeleton/grails-app/conf/logback-spring.xml
 delete mode 100644 grails-quartz/build.gradle
 delete mode 100644 grails-quartz/grails-app/services/grails/plugins/quartz/JobManagerService.groovy
 delete mode 100644 grails-quartz/src/main/groovy/grails/plugins/quartz/CustomTriggerFactoryBean.java
 delete mode 100644 grails-quartz/src/main/groovy/grails/plugins/quartz/DefaultGrailsJobClass.java
 delete mode 100644 grails-quartz/src/main/groovy/grails/plugins/quartz/GrailsJobClass.java
 delete mode 100644 grails-quartz/src/main/groovy/grails/plugins/quartz/GrailsJobClassConstants.java
 delete mode 100644 grails-quartz/src/main/groovy/grails/plugins/quartz/GrailsJobFactory.java
 delete mode 100644 grails-quartz/src/main/groovy/grails/plugins/quartz/JobArtefactHandler.groovy
 delete mode 100644 grails-quartz/src/main/groovy/grails/plugins/quartz/JobDescriptor.groovy
 delete mode 100644 grails-quartz/src/main/groovy/grails/plugins/quartz/JobDetailFactoryBean.java
 delete mode 100644 grails-quartz/src/main/groovy/grails/plugins/quartz/QuartzJob.groovy
 delete mode 100644 grails-quartz/src/main/groovy/grails/plugins/quartz/QuartzJobTraitInjector.groovy
 delete mode 100644 grails-quartz/src/main/groovy/grails/plugins/quartz/TriggerDescriptor.groovy
 delete mode 100644 grails-quartz/src/main/groovy/grails/plugins/quartz/TriggerUtils.groovy
 delete mode 100644 grails-quartz/src/main/groovy/grails/plugins/quartz/cleanup/JdbcCleanup.groovy
 delete mode 100644 grails-quartz/src/main/groovy/grails/plugins/quartz/config/TriggersConfigBuilder.groovy
 delete mode 100644 grails-quartz/src/main/groovy/grails/plugins/quartz/listeners/ExceptionPrinterJobListener.java
 delete mode 100644 grails-quartz/src/main/groovy/grails/plugins/quartz/listeners/SessionBinderJobListener.java
 delete mode 100644 grails-quartz/src/main/groovy/quartz/QuartzGrailsPlugin.groovy
 delete mode 100644 grails-quartz/src/main/scripts/CreateJob.groovy
 delete mode 100644 grails-quartz/src/main/templates/Job.groovy
 delete mode 100644 grails-quartz/src/test/groovy/grails/plugins/quartz/CronTriggerTimeZoneSpec.groovy
 delete mode 100644 grails-quartz/src/test/groovy/grails/plugins/quartz/CustomTriggerFactoryBeanSpec.groovy
 delete mode 100644 grails-quartz/src/test/groovy/grails/plugins/quartz/DefaultGrailsJobClassSpec.groovy
 delete mode 100644 grails-quartz/src/test/groovy/grails/plugins/quartz/GrailsJobFactorySpec.groovy
 delete mode 100644 grails-quartz/src/test/groovy/grails/plugins/quartz/JobArtefactHandlerSpec.groovy
 delete mode 100644 grails-quartz/src/test/groovy/grails/plugins/quartz/JobDescriptorSpec.groovy
 delete mode 100644 grails-quartz/src/test/groovy/grails/plugins/quartz/JobDetailFactoryBeanSpec.groovy
 delete mode 100644 grails-quartz/src/test/groovy/grails/plugins/quartz/MockDoWithSpring.groovy
 delete mode 100644 grails-quartz/src/test/groovy/grails/plugins/quartz/QuartzJobSpec.groovy
 delete mode 100644 grails-quartz/src/test/groovy/grails/plugins/quartz/QuartzJobTraitInjectorSpec.groovy
 delete mode 100644 grails-quartz/src/test/groovy/grails/plugins/quartz/TestQuartzJob.groovy
 delete mode 100644 grails-quartz/src/test/groovy/grails/plugins/quartz/TriggerDescriptorSpec.groovy
 delete mode 100644 grails-quartz/src/test/groovy/grails/plugins/quartz/config/TriggersConfigBuilderSpec.groovy
 delete mode 100644 grails-quartz/src/test/groovy/quartz/QuartzGrailsPluginSpec.groovy
 delete mode 100644 grails-quartz/src/test/groovy/quartz/QuartzJobStoreCleanupSpec.groovy
 delete mode 100644 grails-quartz/src/test/groovy/quartz/QuartzSchedulerContextSpec.groovy
 delete mode 100644 grails-quartz/src/test/groovy/quartz/QuartzStartupSchedulingSpec.groovy
 delete mode 100644 grails-quartz/src/test/groovy/quartz/jobs/ContextSpecJob.groovy
 delete mode 100644 grails-rest-transforms/src/test/groovy/org/grails/plugins/web/rest/render/ServletRenderContextHttpMethodSpec.groovy
 delete mode 100644 grails-scaffolding/src/main/groovy/org/apache/grails/scaffolding/aot/ScaffoldingRuntimeHints.java
 delete mode 100644 grails-scaffolding/src/main/resources/META-INF/spring/aot.factories
 delete mode 100644 grails-scaffolding/src/test/groovy/grails/plugin/scaffolding/ScaffoldedIndexViewModelSpec.groovy
 delete mode 100644 grails-shell-cli/src/test/groovy/org/grails/cli/GrailsCliLoggingVerifier.groovy
 delete mode 100644 grails-shell-cli/src/test/groovy/org/grails/cli/GrailsCliProjectDetectionSpec.groovy
 delete mode 100644 grails-shell-cli/src/test/groovy/org/grails/cli/GrailsCliSpec.groovy
 delete mode 100644 grails-shell-cli/src/test/groovy/org/grails/cli/boot/SpringApplicationWebApplicationInitializerSpec.groovy
 delete mode 100644 grails-shell-cli/src/test/groovy/org/grails/cli/command/run/LifecycleVerifier.groovy
 delete mode 100644 grails-shell-cli/src/test/groovy/org/grails/cli/command/run/SpringApplicationRunnerSpec.groovy
 delete mode 100644 grails-shell-cli/src/test/groovy/org/grails/cli/compiler/grape/DefaultRepositorySystemSessionAutoConfigurationSpec.groovy
 delete mode 100644 grails-shell-cli/src/test/groovy/org/grails/cli/profile/AbstractProfileSpec.groovy
 delete mode 100644 grails-shell-cli/src/test/groovy/org/grails/cli/profile/commands/factory/ApplicationContextCommandFactorySpec.groovy
 delete mode 100644 grails-shell-cli/src/test/groovy/org/grails/cli/profile/commands/factory/LegacyPluginScriptCompatSpec.groovy
 delete mode 100644 grails-shell-cli/src/test/groovy/org/grails/cli/profile/repository/MavenProfileRepositorySnapshotSpec.groovy
 mode change 100755 => 100644 grails-shell-cli/src/test/resources/gradle-sample/gradlew.bat
 delete mode 100644 grails-shell-cli/src/test/resources/org/grails/cli/compiler/dependencies/spring-boot-dependencies-effective-bom.xml
 delete mode 100644 grails-spring-security/compat/src/test/groovy/org/springframework/security/web/util/matcher/AntPathRequestMatcherSpec.groovy
 rename grails-spring-security/oauth2/plugin/grails-app/i18n/{spring-security-oauth2.properties => messages.properties} (100%)
 rename grails-spring-security/plugin/src/main/resources/META-INF/{additional-spring-configuration-metadata.json => spring-configuration-metadata.json} (90%)
 delete mode 100644 grails-spring-security/plugin/src/test/groovy/grails/plugin/springsecurity/ConfigurationMetadataSpec.groovy
 delete mode 100644 grails-spring-security/plugin/src/test/groovy/grails/plugin/springsecurity/web/UpdateRequestContextHolderExceptionTranslationFilterSpec.groovy
 rename grails-spring-security/ui/plugin/grails-app/i18n/{spring-security-ui.properties => messages.spring-security-ui.properties} (100%)
 delete mode 100644 grails-spring/src/test/groovy/org/grails/spring/DefaultRuntimeSpringConfigurationAotSpec.groovy
 create mode 100644 grails-test-core/src/main/groovy/org/grails/test/report/junit/JUnitReports.java
 create mode 100644 grails-test-core/src/main/groovy/org/grails/test/report/junit/JUnitReportsFactory.java
 create mode 100644 grails-test-core/src/main/groovy/org/grails/test/report/junit/PlainFormatter.java
 create mode 100644 grails-test-core/src/main/groovy/org/grails/test/report/junit/XMLFormatter.java
 delete mode 100644 grails-test-examples/aot/build.gradle
 delete mode 100644 grails-test-examples/aot/grails-app/conf/application.yml
 delete mode 100644 grails-test-examples/aot/grails-app/controllers/aot/GreetingController.groovy
 delete mode 100644 grails-test-examples/aot/grails-app/controllers/aot/UrlMappings.groovy
 delete mode 100644 grails-test-examples/aot/grails-app/init/aot/Application.groovy
 delete mode 100644 grails-test-examples/aot/grails-app/services/aot/GreetingService.groovy
 delete mode 100644 grails-test-examples/aot/grails-app/taglib/aot/GreetingTagLib.groovy
 delete mode 100644 grails-test-examples/aot/grails-app/views/greeting/index.gsp
 delete mode 100644 grails-test-examples/app1/grails-app/controllers/functionaltests/requestpath/RequestPathController.groovy
 delete mode 100644 grails-test-examples/app1/grails-app/controllers/functionaltests/requestpath/RequestPathForwarderController.groovy
 delete mode 100644 grails-test-examples/app1/src/integration-test/groovy/functionaltests/requestpath/RequestPathSpec.groovy
 delete mode 100644 grails-test-examples/app1/src/test/groovy/functionaltests/CompiledTagCallSpec.groovy
 delete mode 100644 grails-test-examples/app2/src/integration-test/groovy/app2/GrailsUtilStackFiltererIntegrationSpec.groovy
 delete mode 100644 grails-test-examples/app2/src/main/groovy/app2/RecordingStackTraceFilterer.groovy
 delete mode 100644 grails-test-examples/app4/src/integration-test/groovy/app4/OversizedUploadFunctionalSpec.groovy
 delete mode 100644 grails-test-examples/async-events-pubsub-demo/grails-app/controllers/pubsub/demo/TimeoutController.groovy
 delete mode 100644 grails-test-examples/beans-dsl-plugin/build.gradle
 delete mode 100644 grails-test-examples/beans-dsl-plugin/src/main/groovy/beandsl/example/plugin/FarewellGrailsPlugin.groovy
 delete mode 100644 grails-test-examples/beans-dsl-plugin/src/main/groovy/beandsl/example/plugin/GreetingGrailsPlugin.groovy
 delete mode 100644 grails-test-examples/beans-dsl-plugin/src/main/groovy/beandsl/example/plugin/SalutationGrailsPlugin.groovy
 delete mode 100644 grails-test-examples/beans-dsl-plugin/src/test/groovy/beandsl/example/plugin/FarewellGrailsPluginAutoDiscoverySpec.groovy
 delete mode 100644 grails-test-examples/beans-dsl-plugin/src/test/groovy/beandsl/example/plugin/GreetingGrailsPluginAutoDiscoverySpec.groovy
 delete mode 100644 grails-test-examples/beans-dsl-plugin/src/test/groovy/beandsl/example/plugin/SalutationGrailsPluginAutoDiscoverySpec.groovy
 delete mode 100644 grails-test-examples/beans-dsl/build.gradle
 delete mode 100644 grails-test-examples/beans-dsl/src/main/groovy/beandsl/example/ExampleBeans.groovy
 delete mode 100644 grails-test-examples/beans-dsl/src/main/groovy/beandsl/example/FancyGreeter.groovy
 delete mode 100644 grails-test-examples/beans-dsl/src/main/groovy/beandsl/example/LoudGreeter.groovy
 delete mode 100644 grails-test-examples/beans-dsl/src/test/groovy/beandsl/example/ExampleBeansAutoConfigurationSpec.groovy
 delete mode 100644 grails-test-examples/beans-dsl/src/test/groovy/beandsl/example/ExampleBeansAutoDiscoverySpec.groovy
 delete mode 100644 grails-test-examples/benchmarks/README.adoc
 delete mode 100644 grails-test-examples/benchmarks/build.gradle
 delete mode 100644 grails-test-examples/benchmarks/src/jmh/java/org/apache/grails/benchmarks/controllers/ControllerActionBenchmark.java
 delete mode 100644 grails-test-examples/benchmarks/src/jmh/java/org/apache/grails/benchmarks/controllers/ControllerMappingCollectionBenchmark.java
 delete mode 100644 grails-test-examples/benchmarks/src/jmh/java/org/apache/grails/benchmarks/controllers/ControllerResponseBenchmark.java
 delete mode 100644 grails-test-examples/benchmarks/src/jmh/java/org/apache/grails/benchmarks/databinding/SimpleDataBinderBenchmark.java
 delete mode 100644 grails-test-examples/benchmarks/src/jmh/java/org/apache/grails/benchmarks/gsp/GroovyPageParserBenchmark.java
 delete mode 100644 grails-test-examples/benchmarks/src/jmh/java/org/apache/grails/benchmarks/interceptors/InterceptorChainBenchmark.java
 delete mode 100644 grails-test-examples/benchmarks/src/jmh/java/org/apache/grails/benchmarks/interceptors/UrlMappingMatcherBenchmark.java
 delete mode 100644 grails-test-examples/benchmarks/src/jmh/java/org/apache/grails/benchmarks/ruler/CpuRulerBenchmark.java
 delete mode 100644 grails-test-examples/benchmarks/src/jmh/java/org/apache/grails/benchmarks/ruler/MemoryRulerBenchmark.java
 delete mode 100644 grails-test-examples/benchmarks/src/jmh/java/org/apache/grails/benchmarks/urlmappings/UrlMappingsBenchmark.java
 delete mode 100644 grails-test-examples/benchmarks/src/jmh/java/org/apache/grails/benchmarks/views/ViewTemplateRenderingBenchmark.java
 delete mode 100644 grails-test-examples/benchmarks/src/jmh/java/org/apache/grails/benchmarks/web/GrailsWebRequestBenchmark.java
 delete mode 100644 grails-test-examples/benchmarks/src/jmh/java/org/apache/grails/benchmarks/web/MultipartResolutionBenchmark.java
 delete mode 100644 grails-test-examples/benchmarks/src/jmh/java/org/apache/grails/benchmarks/web/RequestPropertyAccessBenchmark.java
 delete mode 100644 grails-test-examples/benchmarks/src/main/groovy/org/apache/grails/benchmarks/controllers/ControllerFixture.groovy
 delete mode 100644 grails-test-examples/benchmarks/src/main/groovy/org/apache/grails/benchmarks/controllers/ControllerMappingsFixture.groovy
 delete mode 100644 grails-test-examples/benchmarks/src/main/groovy/org/apache/grails/benchmarks/controllers/ControllerResponseFixture.groovy
 delete mode 100644 grails-test-examples/benchmarks/src/main/groovy/org/apache/grails/benchmarks/interceptors/InterceptorChainFixture.groovy
 delete mode 100644 grails-test-examples/benchmarks/src/main/groovy/org/apache/grails/benchmarks/interceptors/InterceptorFixture.groovy
 delete mode 100644 grails-test-examples/benchmarks/src/main/groovy/org/apache/grails/benchmarks/urlmappings/UrlMappingsFixture.groovy
 delete mode 100644 grails-test-examples/benchmarks/src/main/groovy/org/apache/grails/benchmarks/views/ViewTemplateFixture.groovy
 delete mode 100644 grails-test-examples/benchmarks/src/main/groovy/org/apache/grails/benchmarks/web/RequestPropertyFixture.groovy
 delete mode 100644 grails-test-examples/benchmarks/src/main/groovy/org/apache/grails/benchmarks/web/WebContextFixture.groovy
 delete mode 100644 grails-test-examples/benchmarks/src/report/groovy/org/apache/grails/benchmarks/report/BenchmarkComparator.groovy
 delete mode 100644 grails-test-examples/benchmarks/src/report/groovy/org/apache/grails/benchmarks/report/CommentPoster.groovy
 delete mode 100644 grails-test-examples/benchmarks/src/report/groovy/org/apache/grails/benchmarks/report/Comparison.groovy
 delete mode 100644 grails-test-examples/benchmarks/src/report/groovy/org/apache/grails/benchmarks/report/JmhCompare.groovy
 delete mode 100644 grails-test-examples/benchmarks/src/report/groovy/org/apache/grails/benchmarks/report/JmhResults.groovy
 delete mode 100644 grails-test-examples/benchmarks/src/report/groovy/org/apache/grails/benchmarks/report/ReportRenderer.groovy
 delete mode 100644 grails-test-examples/benchmarks/src/reportTest/groovy/org/apache/grails/benchmarks/report/BenchmarkComparatorSpec.groovy
 delete mode 100644 grails-test-examples/benchmarks/src/reportTest/groovy/org/apache/grails/benchmarks/report/GitHubCommentsHttpSpec.groovy
 delete mode 100644 grails-test-examples/benchmarks/src/reportTest/groovy/org/apache/grails/benchmarks/report/GoldenReportSpec.groovy
 delete mode 100644 grails-test-examples/benchmarks/src/reportTest/groovy/org/apache/grails/benchmarks/report/JmhCompareSpec.groovy
 delete mode 100644 grails-test-examples/benchmarks/src/reportTest/groovy/org/apache/grails/benchmarks/report/PostFileSpec.groovy
 delete mode 100644 grails-test-examples/benchmarks/src/reportTest/resources/jmh-golden/broad-base.json
 delete mode 100644 grails-test-examples/benchmarks/src/reportTest/resources/jmh-golden/broad-head.json
 delete mode 100644 grails-test-examples/benchmarks/src/reportTest/resources/jmh-golden/edges-base.json
 delete mode 100644 grails-test-examples/benchmarks/src/reportTest/resources/jmh-golden/edges-head.json
 delete mode 100644 grails-test-examples/benchmarks/src/reportTest/resources/jmh-golden/expected-broad.md
 delete mode 100644 grails-test-examples/benchmarks/src/reportTest/resources/jmh-golden/expected-edges.md
 delete mode 100644 grails-test-examples/benchmarks/src/reportTest/resources/jmh-golden/expected-headonly.md
 delete mode 100644 grails-test-examples/benchmarks/src/reportTest/resources/jmh-golden/expected-norulers.md
 delete mode 100644 grails-test-examples/benchmarks/src/reportTest/resources/jmh-golden/expected-numbers.md
 delete mode 100644 grails-test-examples/benchmarks/src/reportTest/resources/jmh-golden/expected-shards.md
 delete mode 100644 grails-test-examples/benchmarks/src/reportTest/resources/jmh-golden/norulers-base.json
 delete mode 100644 grails-test-examples/benchmarks/src/reportTest/resources/jmh-golden/norulers-head.json
 delete mode 100644 grails-test-examples/benchmarks/src/reportTest/resources/jmh-golden/numbers-base.json
 delete mode 100644 grails-test-examples/benchmarks/src/reportTest/resources/jmh-golden/numbers-head.json
 delete mode 100644 grails-test-examples/benchmarks/src/reportTest/resources/jmh-golden/shards-base/shard-a.json
 delete mode 100644 grails-test-examples/benchmarks/src/reportTest/resources/jmh-golden/shards-base/shard-b.json
 delete mode 100644 grails-test-examples/benchmarks/src/reportTest/resources/jmh-golden/shards-head/shard-a.json
 delete mode 100644 grails-test-examples/benchmarks/src/reportTest/resources/jmh-golden/shards-head/shard-b.json
 delete mode 100644 grails-test-examples/gsp-compile-static/build.gradle
 delete mode 100644 grails-test-examples/gsp-compile-static/grails-app/controllers/gspstatic/DemoController.groovy
 delete mode 100644 grails-test-examples/gsp-compile-static/grails-app/controllers/gspstatic/UrlMappings.groovy
 delete mode 100644 grails-test-examples/gsp-compile-static/grails-app/taglib/gspstatic/DemoTagLib.groovy
 delete mode 100644 grails-test-examples/gsp-compile-static/grails-app/views/demo/declared.gsp
 delete mode 100644 grails-test-examples/gsp-compile-static/grails-app/views/demo/frameworkNames.gsp
 delete mode 100644 grails-test-examples/gsp-compile-static/grails-app/views/demo/index.gsp
 delete mode 100644 grails-test-examples/gsp-compile-static/grails-app/views/error.gsp
 delete mode 100644 grails-test-examples/gsp-compile-static/grails-app/views/notFound.gsp
 delete mode 100644 grails-test-examples/gsp-compile-static/src/integration-test/groovy/gspstatic/GspCompileStaticSpec.groovy
 delete mode 100644 grails-test-examples/gsp-spring-boot/app/src/main/assets/javascripts/application.js
 delete mode 100644 grails-test-examples/gsp-spring-boot/app/src/main/assets/javascripts/theme.js
 delete mode 100644 grails-test-examples/gsp-spring-boot/app/src/main/assets/stylesheets/application.css
 delete mode 100644 grails-test-examples/gsp-spring-boot/app/src/main/java/hello/JspSupport.java
 delete mode 100644 grails-test-examples/gsp-spring-boot/app/src/main/java/hello/JspViewController.java
 delete mode 100644 grails-test-examples/gsp-spring-boot/app/src/test/java/hello/AssetLinkTest.java
 delete mode 100644 grails-test-examples/gsp-spring-boot/app/src/test/java/hello/ErrorPageTest.java
 delete mode 100644 grails-test-examples/gsp-spring-boot/app/src/test/java/hello/JspSupportTest.java
 delete mode 100644 grails-test-examples/gsp-spring-boot/app/src/test/java/hello/JspViewTest.java
 delete mode 100644 grails-test-examples/gsp-spring-boot/app/src/test/java/hello/PrecompiledViewTest.java
 delete mode 100644 grails-test-examples/gsp-spring-boot/app/src/test/java/hello/StandaloneContextTest.java
 delete mode 100644 grails-test-examples/hibernate7/app1/grails-app/domain/functionaltests/ManagedEntityDomain.groovy
 copy grails-test-examples/{neo4j/neo4j-standalone => issue-11767}/build.gradle (63%)
 rename grails-test-examples/{gsp-compile-static => issue-11767}/grails-app/conf/application.yml (82%)
 copy grails-test-examples/{spring-security/cas/test1 => issue-11767}/grails-app/conf/logback.xml (89%)
 create mode 100644 grails-test-examples/issue-11767/grails-app/controllers/issue11767/app/AppController.groovy
 copy grails-test-examples/{neo4j/hibernate5/grails-app/controllers => issue-11767/grails-app/controllers/issue11767/app}/UrlMappings.groovy (91%)
 copy grails-test-examples/{neo4j/test-data-service/grails-app/init/example => issue-11767/grails-app/init/issue11767/app}/Application.groovy (91%)
 rename grails-test-examples/{async-events-pubsub-demo/src/integration-test/groovy/pubsub/demo/TimeoutControllerSpec.groovy => issue-11767/src/integration-test/groovy/issue11767/app/ConfigLoadingSpec.groovy} (52%)
 rename grails-data-mongodb/bson/src/test/groovy/org/grails/datastore/bson/codecs/domain/Address.groovy => grails-test-examples/issue-11767/src/main/groovy/issue11767/app/AppGroovyMicronautBean.groovy (81%)
 delete mode 100644 grails-test-examples/jetty/grails-app/controllers/issue12688/UploadController.groovy
 delete mode 100644 grails-test-examples/jetty/src/integration-test/groovy/issue12688/JettyOversizedUploadSpec.groovy
 copy grails-test-examples/{hibernate7/grails-data-service-multi-datasource => micronaut-groovy-only}/build.gradle (59%)
 rename {end-to-end/legacy-commands => grails-test-examples/micronaut-groovy-only}/grails-app/conf/application.yml (59%)
 rename grails-test-examples/{neo4j/hibernate5/grails-app/controllers => micronaut-groovy-only/grails-app/controllers/micronautgroovyonly}/UrlMappings.groovy (96%)
 rename grails-test-examples/{neo4j/test-data-service/grails-app/init/example => micronaut-groovy-only/grails-app/init/micronautgroovyonly}/Application.groovy (91%)
 copy grails-test-examples/{neo4j/test-data-service/src/main/groovy/example/TestBean.groovy => micronaut-groovy-only/grails-app/services/micronautgroovyonly/BeanInjectionService.groovy} (68%)
 copy grails-test-examples/{gsp-compile-static/grails-app/controllers/gspstatic/Book.groovy => micronaut-groovy-only/grails-app/services/micronautgroovyonly/TestService.groovy} (92%)
 rename grails-test-examples/{neo4j/test-data-service/src/integration-test/groovy/example/TestServiceSpec.groovy => micronaut-groovy-only/src/integration-test/groovy/micronautgroovyonly/BeanInjectionServiceSpec.groovy} (56%)
 create mode 100644 grails-test-examples/micronaut-groovy-only/src/integration-test/groovy/micronautgroovyonly/MicronautContextSpec.groovy
 create mode 100644 grails-test-examples/micronaut-groovy-only/src/integration-test/groovy/micronautgroovyonly/MicronautQualifierSpec.groovy
 copy grails-test-examples/{gsp-compile-static/grails-app/controllers/gspstatic/Book.groovy => micronaut-groovy-only/src/main/groovy/bean/injection/AppConfig.groovy} (85%)
 rename grails-datamapping-core/src/test/groovy/org/grails/datastore/jakartafixture/JakartaTestEntity.groovy => grails-test-examples/micronaut-groovy-only/src/main/groovy/bean/injection/FactoryCreatedService.groovy (88%)
 rename grails-test-examples/{hibernate5/grails-hibernate/grails-app/domain/functional/tests/Organization.groovy => micronaut-groovy-only/src/main/groovy/bean/injection/NamedService.groovy} (92%)
 rename grails-test-examples/{beans-dsl-plugin/src/main/groovy/beandsl/example/plugin/Salutation.groovy => micronaut-groovy-only/src/main/groovy/bean/injection/PrimaryNamedService.groovy} (79%)
 rename grails-gradle/plugins/src/test/resources/test-projects/legacy-command-discovery/legacy-command-api/src/main/java/grails/dev/commands/ApplicationCommand.java => grails-test-examples/micronaut-groovy-only/src/main/groovy/bean/injection/Qualified.groovy (79%)
 rename grails-test-examples/{beans-dsl-plugin/src/main/groovy/beandsl/example/plugin/Greeting.groovy => micronaut-groovy-only/src/main/groovy/bean/injection/QualifiedNamedService.groovy} (78%)
 copy grails-test-examples/{gsp-compile-static/grails-app/controllers/gspstatic/Book.groovy => micronaut-groovy-only/src/main/groovy/bean/injection/RegularNamedService.groovy} (81%)
 copy grails-test-examples/{gsp-compile-static/grails-app/init/gspstatic/Application.groovy => micronaut-groovy-only/src/main/groovy/bean/injection/ServiceFactory.groovy} (73%)
 copy grails-test-examples/{gsp-compile-static/grails-app/controllers/gspstatic/Book.groovy => micronaut-groovy-only/src/main/groovy/bean/injection/SpecialNamedService.groovy} (81%)
 copy grails-test-examples/{gsp-sitemesh3 => micronaut-hibernate5}/build.gradle (55%)
 copy {end-to-end/spring-dependency-management => grails-test-examples/micronaut-hibernate5}/grails-app/conf/application.yml (82%)
 copy grails-test-examples/{app1 => micronaut-hibernate5}/grails-app/conf/logback.xml (100%)
 copy grails-test-examples/{benchmarks/src/report/groovy/org/apache/grails/benchmarks/report/Benchmark.groovy => micronaut-hibernate5/grails-app/controllers/micronaut/hibernate5/UrlMappings.groovy} (56%)
 copy grails-test-examples/{benchmarks/src/report/groovy/org/apache/grails/benchmarks/report/Benchmark.groovy => micronaut-hibernate5/grails-app/init/micronaut/hibernate5/Application.groovy} (57%)
 copy grails-test-examples/{quartz/grails-app/conf/logback.xml => micronaut-hibernate5/grails-app/views/index.gsp} (67%)
 create mode 100644 grails-test-examples/micronaut-hibernate5/src/integration-test/groovy/micronaut/hibernate5/ApplicationStartupSpec.groovy
 copy grails-test-examples/{hibernate7/gorm => micronaut-hibernate7}/build.gradle (57%)
 copy {end-to-end/spring-dependency-management => grails-test-examples/micronaut-hibernate7}/grails-app/conf/application.yml (82%)
 copy grails-test-examples/{app1 => micronaut-hibernate7}/grails-app/conf/logback.xml (100%)
 copy grails-test-examples/{benchmarks/src/report/groovy/org/apache/grails/benchmarks/report/Benchmark.groovy => micronaut-hibernate7/grails-app/controllers/micronaut/hibernate7/UrlMappings.groovy} (56%)
 rename grails-test-examples/{benchmarks/src/report/groovy/org/apache/grails/benchmarks/report/Benchmark.groovy => micronaut-hibernate7/grails-app/init/micronaut/hibernate7/Application.groovy} (57%)
 rename grails-test-examples/{quartz/grails-app/conf/logback.xml => micronaut-hibernate7/grails-app/views/index.gsp} (67%)
 create mode 100644 grails-test-examples/micronaut-hibernate7/src/integration-test/groovy/micronaut/hibernate7/ApplicationStartupSpec.groovy
 copy {grails-profiles/base/skeleton => grails-test-examples/micronaut}/.gitignore (100%)
 copy grails-test-examples/{undertow => micronaut}/build.gradle (53%)
 copy {grails-data-docs/data-mapping-website/src/main/resources => grails-test-examples/micronaut/grails-app/assets}/images/advancedgrails.svg (100%)
 copy grails-test-examples/{geb-gebconfig => micronaut}/grails-app/assets/images/apple-touch-icon-retina.png (100%)
 copy grails-test-examples/{geb-gebconfig => micronaut}/grails-app/assets/images/apple-touch-icon.png (100%)
 copy {grails-data-docs/data-mapping-website/src/main/resources/images/confs => grails-test-examples/micronaut/grails-app/assets/images}/documentation.svg (100%)
 copy {build-logic/docs-core/src/main/template/img => grails-test-examples/micronaut/grails-app/assets/images}/favicon.ico (100%)
 copy {build-logic/docs-core/src/main/template/img => grails-test-examples/micronaut/grails-app/assets/images}/grails-cupsonly-logo-white.svg (100%)
 copy {build-logic/docs-core/src/main/template/img => grails-test-examples/micronaut/grails-app/assets/images}/grails.svg (100%)
 copy grails-test-examples/{app1 => micronaut}/grails-app/assets/images/skin/database_add.png (100%)
 copy grails-test-examples/{app1 => micronaut}/grails-app/assets/images/skin/database_delete.png (100%)
 copy grails-test-examples/{app1 => micronaut}/grails-app/assets/images/skin/database_edit.png (100%)
 copy grails-test-examples/{app1 => micronaut}/grails-app/assets/images/skin/database_save.png (100%)
 copy grails-test-examples/{app1 => micronaut}/grails-app/assets/images/skin/database_table.png (100%)
 copy grails-test-examples/{app1 => micronaut}/grails-app/assets/images/skin/exclamation.png (100%)
 copy grails-test-examples/{app1 => micronaut}/grails-app/assets/images/skin/house.png (100%)
 copy grails-test-examples/{app1 => micronaut}/grails-app/assets/images/skin/information.png (100%)
 copy grails-test-examples/{app1 => micronaut}/grails-app/assets/images/skin/shadow.jpg (100%)
 copy grails-test-examples/{app1 => micronaut}/grails-app/assets/images/skin/sorted_asc.gif (100%)
 copy grails-test-examples/{app1 => micronaut}/grails-app/assets/images/skin/sorted_desc.gif (100%)
 copy grails-test-examples/{geb-gebconfig => micronaut}/grails-app/assets/images/slack.svg (100%)
 copy grails-test-examples/{app1 => micronaut}/grails-app/assets/images/spinner.gif (100%)
 copy grails-test-examples/{geb-gebconfig => micronaut}/grails-app/assets/javascripts/application.js (100%)
 copy grails-test-examples/{demo33 => micronaut}/grails-app/assets/stylesheets/application.css (100%)
 copy grails-test-examples/{demo33 => micronaut}/grails-app/assets/stylesheets/errors.css (100%)
 copy grails-test-examples/{hibernate5/issue450 => micronaut}/grails-app/assets/stylesheets/grails.css (100%)
 copy grails-test-examples/{hibernate5/issue450 => micronaut}/grails-app/assets/stylesheets/main.css (100%)
 copy grails-test-examples/{demo33 => micronaut}/grails-app/assets/stylesheets/mobile.css (100%)
 copy grails-test-examples/{app4 => micronaut}/grails-app/conf/application.yml (68%)
 copy grails-test-examples/{app1 => micronaut}/grails-app/conf/logback.xml (100%)
 copy grails-test-examples/{app2 => micronaut}/grails-app/conf/spring/resources.groovy (100%)
 create mode 100644 grails-test-examples/micronaut/grails-app/controllers/micronaut/ExternalApiController.groovy
 rename end-to-end/legacy-commands-plugin/src/main/groovy/legacy/commands/plugin/HelloLegacyAppCommand.groovy => grails-test-examples/micronaut/grails-app/controllers/micronaut/MicronautTestController.groovy (59%)
 create mode 100644 grails-test-examples/micronaut/grails-app/controllers/micronaut/UrlMappings.groovy
 copy grails-test-examples/{async-events-pubsub-demo => micronaut}/grails-app/i18n/messages.properties (100%)
 copy grails-test-examples/{gsp-layout => micronaut}/grails-app/i18n/messages_cs.properties (100%)
 copy grails-test-examples/{app1 => micronaut}/grails-app/i18n/messages_da.properties (100%)
 copy grails-test-examples/{async-events-pubsub-demo => micronaut}/grails-app/i18n/messages_de.properties (100%)
 copy grails-test-examples/{app1 => micronaut}/grails-app/i18n/messages_es.properties (100%)
 copy grails-test-examples/{async-events-pubsub-demo => micronaut}/grails-app/i18n/messages_fr.properties (100%)
 copy grails-test-examples/{app1 => micronaut}/grails-app/i18n/messages_it.properties (100%)
 copy grails-test-examples/{async-events-pubsub-demo => micronaut}/grails-app/i18n/messages_ja.properties (100%)
 copy grails-test-examples/{app1 => micronaut}/grails-app/i18n/messages_nb.properties (100%)
 copy grails-test-examples/{app1 => micronaut}/grails-app/i18n/messages_nl.properties (100%)
 copy grails-test-examples/{app1 => micronaut}/grails-app/i18n/messages_pl.properties (100%)
 copy grails-test-examples/{async-events-pubsub-demo => micronaut}/grails-app/i18n/messages_pt_BR.properties (100%)
 copy grails-test-examples/{app1 => micronaut}/grails-app/i18n/messages_pt_PT.properties (100%)
 copy grails-test-examples/{app1 => micronaut}/grails-app/i18n/messages_ru.properties (100%)
 copy grails-test-examples/{gsp-layout => micronaut}/grails-app/i18n/messages_sk.properties (100%)
 copy grails-test-examples/{app1 => micronaut}/grails-app/i18n/messages_sv.properties (100%)
 copy grails-test-examples/{app1 => micronaut}/grails-app/i18n/messages_th.properties (100%)
 copy grails-test-examples/{app1 => micronaut}/grails-app/i18n/messages_zh_CN.properties (100%)
 copy grails-test-examples/{gsp-compile-static/grails-app/init/gspstatic => micronaut/grails-app/init/micronaut}/Application.groovy (92%)
 rename grails-test-examples/{neo4j/test-data-service/grails-app/init/example => micronaut/grails-app/init/micronaut}/BootStrap.groovy (97%)
 rename grails-test-examples/{neo4j/test-data-service/src/main/groovy/example/TestBean.groovy => micronaut/grails-app/services/micronaut/BeanInjectionService.groovy} (69%)
 create mode 100644 grails-test-examples/micronaut/grails-app/services/micronaut/ExternalApiService.groovy
 copy grails-test-examples/{gsp-compile-static/grails-app/controllers/gspstatic/Book.groovy => micronaut/grails-app/services/micronaut/TestService.groovy} (93%)
 rename grails-test-examples/{neo4j/base => micronaut}/grails-app/views/error.gsp (100%)
 copy grails-test-examples/{spring-security/ldap/custom-user-details-context-mapper => micronaut}/grails-app/views/index.gsp (100%)
 copy grails-test-examples/{cache => micronaut}/grails-app/views/layouts/main.gsp (100%)
 copy grails-test-examples/{cache => micronaut}/grails-app/views/notFound.gsp (100%)
 rename grails-test-examples/{hibernate5/grails-hibernate/src/integration-test/groovy/functional/tests/OrganizationValidationSpec.groovy => micronaut/src/integration-test/groovy/micronaut/BeanInjectionServiceSpec.groovy} (50%)
 create mode 100644 grails-test-examples/micronaut/src/integration-test/groovy/micronaut/MicronautBeanDuplicationSpec.groovy
 create mode 100644 grails-test-examples/micronaut/src/integration-test/groovy/micronaut/MicronautBeanTypesSpec.groovy
 create mode 100644 grails-test-examples/micronaut/src/integration-test/groovy/micronaut/MicronautContextSpec.groovy
 create mode 100644 grails-test-examples/micronaut/src/integration-test/groovy/micronaut/MicronautDeclarativeClientSpec.groovy
 create mode 100644 grails-test-examples/micronaut/src/integration-test/groovy/micronaut/MicronautErsatzAdvancedSpec.groovy
 create mode 100644 grails-test-examples/micronaut/src/integration-test/groovy/micronaut/MicronautErsatzPatternSpec.groovy
 create mode 100644 grails-test-examples/micronaut/src/integration-test/groovy/micronaut/MicronautErsatzRoundtripSpec.groovy
 create mode 100644 grails-test-examples/micronaut/src/integration-test/groovy/micronaut/MicronautPluginBeanSpec.groovy
 create mode 100644 grails-test-examples/micronaut/src/integration-test/groovy/micronaut/MicronautQualifierSpec.groovy
 copy grails-test-examples/{gsp-compile-static/grails-app/controllers/gspstatic/Book.groovy => micronaut/src/main/groovy/bean/injection/AppConfig.groovy} (85%)
 rename grails-test-examples/{app1/grails-app/domain/functionaltests/ManagedEntityDomain.groovy => micronaut/src/main/groovy/bean/injection/FactoryCreatedService.groovy} (87%)
 copy grails-data-neo4j/core/src/main/groovy/org/grails/datastore/gorm/neo4j/SessionFlushedEvent.java => grails-test-examples/micronaut/src/main/groovy/bean/injection/NamedService.java (62%)
 rename grails-test-examples/{beans-dsl/src/main/groovy/beandsl/example/Greeter.groovy => micronaut/src/main/groovy/bean/injection/PrimaryNamedService.groovy} (79%)
 rename grails-test-examples/{beans-dsl-plugin/src/main/groovy/beandsl/example/plugin/Farewell.groovy => micronaut/src/main/groovy/bean/injection/Qualified.groovy} (79%)
 copy grails-test-examples/{gsp-compile-static/grails-app/controllers/gspstatic/Book.groovy => micronaut/src/main/groovy/bean/injection/QualifiedNamedService.groovy} (83%)
 copy grails-test-examples/{gsp-compile-static/grails-app/controllers/gspstatic/Book.groovy => micronaut/src/main/groovy/bean/injection/RegularNamedService.groovy} (81%)
 copy grails-test-examples/{gsp-compile-static/grails-app/init/gspstatic/Application.groovy => micronaut/src/main/groovy/bean/injection/ServiceFactory.groovy} (73%)
 rename grails-test-examples/{gsp-compile-static/grails-app/controllers/gspstatic/Book.groovy => micronaut/src/main/groovy/bean/injection/SpecialNamedService.groovy} (81%)
 create mode 100644 grails-test-examples/micronaut/src/main/groovy/micronaut/client/MicronautAdvancedClient.groovy
 rename end-to-end/legacy-commands-plugin/src/main/groovy/legacy/commands/plugin/LegacyCommandsPluginGrailsPlugin.groovy => grails-test-examples/micronaut/src/main/groovy/micronaut/client/MicronautFilteredClient.groovy (67%)
 rename grails-common/src/test/groovy/org/apache/grails/common/reflect/beans/PublicFieldBean.java => grails-test-examples/micronaut/src/main/groovy/micronaut/client/MicronautHeaderClient.groovy (65%)
 rename grails-core/src/test/groovy/org/grails/plugins/scan/ScannedComponent.groovy => grails-test-examples/micronaut/src/main/groovy/micronaut/client/MicronautPathClient.groovy (62%)
 rename grails-converters/src/test/groovy/org/grails/web/converters/beans/SerializableJavaBean.java => grails-test-examples/micronaut/src/main/groovy/micronaut/client/MicronautReactiveClient.groovy (50%)
 rename grails-converters/src/test/groovy/org/grails/web/converters/beans/SerializableGroovyBean.groovy => grails-test-examples/micronaut/src/main/groovy/micronaut/client/MicronautTestClient.groovy (51%)
 copy grails-data-neo4j/core/src/main/groovy/org/grails/datastore/gorm/neo4j/SessionFlushedEvent.java => grails-test-examples/micronaut/src/main/java/bean/injection/JavaMessageProvider.java (62%)
 copy grails-data-neo4j/core/src/main/groovy/org/grails/datastore/gorm/neo4j/SessionFlushedEvent.java => grails-test-examples/micronaut/src/main/java/bean/injection/JavaSingletonService.java (63%)
 copy end-to-end/legacy-commands/grails-app/controllers/legacycommands/UrlMappings.groovy => grails-test-examples/micronaut/src/main/java/micronaut/client/MicronautRetryableClient.java (70%)
 rename end-to-end/legacy-commands/grails-app/controllers/legacycommands/UrlMappings.groovy => grails-test-examples/micronaut/src/main/java/micronaut/filter/AuthTokenClientFilter.java (67%)
 delete mode 100644 grails-test-examples/neo4j/base/build.gradle
 delete mode 100644 grails-test-examples/neo4j/base/src/integration-test/groovy/functional/tests/pages/BookPages.groovy
 delete mode 100644 grails-test-examples/neo4j/hibernate5/build.gradle
 delete mode 100644 grails-test-examples/neo4j/hibernate5/grails-app/views/error.gsp
 delete mode 100644 grails-test-examples/neo4j/hibernate5/src/integration-test/groovy/functional/tests/pages/AuthorPages.groovy
 delete mode 100644 grails-test-examples/neo4j/hibernate5/src/integration-test/groovy/functional/tests/pages/BookPages.groovy
 delete mode 100644 grails-test-examples/neo4j/spring-boot/build.gradle
 delete mode 100644 grails-test-examples/neo4j/test-data-service/build.gradle
 create mode 100644 grails-test-examples/plugins/issue-11767/build.gradle
 rename {grails-quartz => grails-test-examples/plugins/issue-11767}/grails-app/conf/plugin.yml (89%)
 rename grails-test-examples/{gsp-compile-static/grails-app/init/gspstatic => plugins/issue-11767/grails-app/init/issue11767/plugin}/Application.groovy (84%)
 rename grails-i18n/src/test/groovy/org/grails/plugins/i18n/fixtures/BetaPluginGrailsPlugin.groovy => grails-test-examples/plugins/issue-11767/src/main/groovy/issue11767/plugin/MyPluginGrailsPlugin.groovy (74%)
 rename end-to-end/legacy-commands/grails-app/init/legacycommands/Application.groovy => grails-test-examples/plugins/issue-11767/src/main/groovy/issue11767/plugin/PluginGroovyMicronautBean.groovy (77%)
 rename grails-test-examples/{neo4j/hibernate5/grails-app/init/functional/tests/Application.groovy => plugins/issue-11767/src/main/groovy/issue11767/plugin/PluginGroovySpringBean.groovy} (77%)
 copy grails-data-neo4j/core/src/main/groovy/org/grails/datastore/gorm/neo4j/SessionFlushedEvent.java => grails-test-examples/plugins/issue-11767/src/main/java/issue11767/plugin/PluginJavaMicronautBean.java (63%)
 rename grails-test-examples/plugins/loadfirst/grails-app/i18n/{loadfirst.properties => messages.properties} (100%)
 rename grails-test-examples/plugins/loadfirst/grails-app/i18n/{loadfirst_en_US.properties => messages_en_US.properties} (100%)
 rename grails-test-examples/{neo4j/neo4j-standalone => plugins/micronaut-singleton}/build.gradle (60%)
 rename grails-i18n/src/test/groovy/org/grails/plugins/i18n/fixtures/AlphaPluginGrailsPlugin.groovy => grails-test-examples/plugins/micronaut-singleton/src/main/groovy/micronaut/singleton/MicronautSingletonGrailsPlugin.groovy (75%)
 copy grails-data-neo4j/core/src/main/groovy/org/grails/datastore/gorm/neo4j/SessionFlushedEvent.java => grails-test-examples/plugins/micronaut-singleton/src/main/java/com/example/grails/plugins/micronaut/PluginMessageProvider.java (62%)
 rename grails-data-neo4j/core/src/main/groovy/org/grails/datastore/gorm/neo4j/SessionFlushedEvent.java => grails-test-examples/plugins/micronaut-singleton/src/main/java/com/example/grails/plugins/micronaut/PluginSingletonService.java (63%)
 delete mode 100644 grails-test-examples/quartz/build.gradle
 delete mode 100644 grails-test-examples/quartz/grails-app/conf/application.yml
 delete mode 100644 grails-test-examples/quartz/grails-app/init/quartzapp/Application.groovy
 delete mode 100644 grails-test-examples/quartz/grails-app/init/quartzapp/BootStrap.groovy
 delete mode 100644 grails-test-examples/quartz/grails-app/jobs/quartzapp/DisabledJob.groovy
 delete mode 100644 grails-test-examples/quartz/grails-app/jobs/quartzapp/InterruptibleJob.groovy
 delete mode 100644 grails-test-examples/quartz/grails-app/jobs/quartzapp/LongRunningJob.groovy
 delete mode 100644 grails-test-examples/quartz/grails-app/jobs/quartzapp/NeverFiringJob.groovy
 delete mode 100644 grails-test-examples/quartz/grails-app/jobs/quartzapp/OnDemandJob.groovy
 delete mode 100644 grails-test-examples/quartz/grails-app/jobs/quartzapp/RepeatingJob.groovy
 delete mode 100644 grails-test-examples/quartz/src/integration-test/groovy/quartzapp/QuartzLongRunningJobSpec.groovy
 delete mode 100644 grails-test-examples/quartz/src/integration-test/groovy/quartzapp/QuartzSchedulingSpec.groovy
 delete mode 100644 grails-test-examples/quartz/src/main/groovy/quartzapp/RecordingJobListener.groovy
 delete mode 100644 grails-test-examples/scaffolding/grails-app/controllers/com/example/BookController.groovy
 delete mode 100644 grails-test-examples/scaffolding/grails-app/domain/com/example/Book.groovy
 delete mode 100644 grails-test-examples/scaffolding/grails-app/services/com/example/BookService.groovy
 delete mode 100644 grails-test-examples/scaffolding/src/integrationTest/groovy/com/example/BookControllerSpec.groovy
 delete mode 100644 grails-test-examples/scaffolding/src/integrationTest/groovy/com/example/pages/BookListPage.groovy
 rename {end-to-end => grails-test-examples}/spring-dependency-management/build.gradle (52%)
 rename {end-to-end => grails-test-examples}/spring-dependency-management/grails-app/conf/application.yml (100%)
 rename {end-to-end => grails-test-examples}/spring-dependency-management/grails-app/controllers/UrlMappings.groovy (100%)
 rename {end-to-end => grails-test-examples}/spring-dependency-management/grails-app/controllers/springdm/HelloController.groovy (100%)
 rename {end-to-end => grails-test-examples}/spring-dependency-management/grails-app/init/springdm/Application.groovy (100%)
 rename {end-to-end => grails-test-examples}/spring-dependency-management/grails-app/views/error.gsp (100%)
 rename {end-to-end => grails-test-examples}/spring-dependency-management/grails-app/views/index.gsp (100%)
 rename {end-to-end => grails-test-examples}/spring-dependency-management/grails-app/views/notFound.gsp (100%)
 rename {end-to-end => grails-test-examples}/spring-dependency-management/src/integration-test/groovy/springdm/HelloControllerSpec.groovy (100%)
 delete mode 100644 grails-test-examples/spring-security/cas/test1/grails-app/conf/spring/resources.groovy
 delete mode 100644 grails-test-examples/spring-security/cas/test1/grails-app/controllers/grails/plugin/springsecurity/cas/test/SecureController.groovy
 rename grails-test-examples/{app4/grails-app/controllers/app4/UploadController.groovy => spring-security/cas/test1/grails-app/controllers/spring/security/cas/SecureController.groovy} (75%)
 rename grails-test-examples/spring-security/cas/test1/grails-app/controllers/{grails/plugin/springsecurity/cas/test => spring/security/cas}/UrlMappings.groovy (96%)
 copy grails-test-examples/spring-security/{ldap/custom-user-details-context-mapper => cas/test1}/grails-app/domain/com/test/Role.groovy (100%)
 rename grails-test-examples/spring-security/cas/test1/grails-app/domain/{grails/plugin/springsecurity/cas => com}/test/User.groovy (97%)
 rename grails-test-examples/spring-security/cas/test1/grails-app/domain/{grails/plugin/springsecurity/cas => com}/test/UserRole.groovy (98%)
 delete mode 100644 grails-test-examples/spring-security/cas/test1/grails-app/domain/grails/plugin/springsecurity/cas/test/Role.groovy
 rename grails-test-examples/spring-security/cas/test1/grails-app/init/{grails/plugin/springsecurity => spring/security}/cas/test/Application.groovy (95%)
 rename grails-test-examples/spring-security/cas/test1/grails-app/init/{grails/plugin/springsecurity => spring/security}/cas/test/BootStrap.groovy (93%)
 delete mode 100644 grails-test-examples/spring-security/cas/test1/src/integration-test/groovy/grails/plugin/springsecurity/cas/test/AbstractCasSpec.groovy
 delete mode 100644 grails-test-examples/spring-security/cas/test1/src/integration-test/groovy/grails/plugin/springsecurity/cas/test/CasLoginSpec.groovy
 delete mode 100644 grails-test-examples/spring-security/cas/test1/src/integration-test/groovy/grails/plugin/springsecurity/cas/test/CasNoProxyReceptorSpec.groovy
 delete mode 100644 grails-test-examples/spring-security/cas/test1/src/integration-test/groovy/grails/plugin/springsecurity/cas/test/CasNoSingleSignOutSpec.groovy
 delete mode 100644 grails-test-examples/spring-security/cas/test1/src/integration-test/groovy/grails/plugin/springsecurity/cas/test/CasProxyTicketSpec.groovy
 delete mode 100644 grails-test-examples/spring-security/cas/test1/src/integration-test/groovy/grails/plugin/springsecurity/cas/test/CasSingleSignOutSpec.groovy
 delete mode 100644 grails-test-examples/spring-security/cas/test1/src/main/groovy/grails/plugin/springsecurity/cas/test/CasContainerHolder.groovy
 delete mode 100644 grails-test-examples/spring-security/cas/test1/src/main/groovy/grails/plugin/springsecurity/cas/test/CasServiceUrlConfigurer.groovy
 delete mode 100644 grails-test-examples/spring-security/cas/test1/src/main/groovy/grails/plugin/springsecurity/cas/test/CasTestConfig.groovy
 delete mode 100644 grails-test-examples/spring-security/cas/test1/src/main/groovy/grails/plugin/springsecurity/cas/test/CasTestEnvironmentPostProcessor.groovy
 delete mode 100644 grails-test-examples/spring-security/cas/test1/src/main/resources/META-INF/spring.factories
 delete mode 100644 grails-test-examples/spring-security/cas/test1/src/main/resources/cas/services/grailsTest-10000001.json
 delete mode 100644 grails-test-examples/spring-security/core/integration-test-app/src/integration-test/groovy/grails/plugin/springsecurity/PluginMessageBundleSpec.groovy
 delete mode 100644 grails-test-examples/undertow/grails-app/controllers/undertowapp/UploadController.groovy
 delete mode 100644 grails-test-examples/undertow/src/integration-test/groovy/undertowapp/UndertowOversizedUploadSpec.groovy
 delete mode 100644 grails-test-suite-uber/src/test/groovy/org/grails/web/servlet/DefaultGrailsApplicationAttributesSpec.groovy
 delete mode 100644 grails-test-suite-web/src/test/groovy/org/grails/web/binding/DefaultDatabindingWhitelistBehaviorSpec.groovy
 delete mode 100644 grails-test-suite-web/src/test/groovy/org/grails/web/servlet/mvc/GrailsWebRequestSpec.groovy
 delete mode 100644 grails-testing-support-mongodb/src/main/groovy/org/apache/grails/testing/mongo/EmbeddedReplicaSetSpec.groovy
 create mode 100644 grails-url-mappings/src/main/groovy/org/grails/plugins/web/mapping/UrlMappingsAutoConfiguration.java
 rename grails-views-gson/src/{testFixtures => main}/groovy/grails/plugin/json/view/test/JsonRenderResult.groovy (100%)
 rename grails-views-gson/src/{testFixtures => main}/groovy/grails/plugin/json/view/test/JsonViewTest.groovy (100%)
 rename grails-views-gson/src/{testFixtures => main}/groovy/grails/plugin/json/view/test/TestLinkGenerator.groovy (100%)
 rename grails-views-gson/src/{testFixtures => main}/groovy/grails/plugin/json/view/test/TestRequestConfigurer.groovy (100%)
 delete mode 100644 grails-views-gson/src/main/resources/META-INF/additional-spring-configuration-metadata.json
 create mode 100644 grails-views-gson/src/main/resources/META-INF/spring-configuration-metadata.json
 delete mode 100644 grails-views-gson/src/test/groovy/grails/plugin/json/view/api/handleassociations/Fixtures.groovy
 delete mode 100644 grails-views-gson/src/test/groovy/grails/plugin/json/view/expand/Fixtures.groovy
 delete mode 100644 grails-views-gson/src/test/groovy/grails/plugin/json/view/halembedded/Fixtures.groovy
 delete mode 100644 grails-views-gson/src/test/groovy/grails/plugin/json/view/include/Fixtures.groovy
 delete mode 100644 grails-views-gson/src/test/groovy/grails/plugin/json/view/iterable/Fixtures.groovy
 delete mode 100644 grails-views-gson/src/test/groovy/grails/plugin/json/view/maprender/Fixtures.groovy
 delete mode 100644 grails-views-gson/src/test/groovy/grails/plugin/json/view/nullrendering/Fixtures.groovy
 delete mode 100644 grails-views-markup/src/main/resources/META-INF/additional-spring-configuration-metadata.json
 rename grails-web-common/src/{testFixtures => main}/groovy/grails/util/GrailsWebMockUtil.groovy (100%)
 delete mode 100644 grails-web-common/src/main/groovy/org/grails/web/util/HiddenHttpMethod.java
 delete mode 100644 grails-web-common/src/test/groovy/org/grails/web/util/HiddenHttpMethodSpec.groovy
 rename grails-web-core/src/main/resources/META-INF/{additional-spring-configuration-metadata.json => spring-configuration-metadata.json} (66%)
 delete mode 100644 grails-web-databinding/src/main/groovy/grails/web/databinding/BindAllowed.java
 delete mode 100644 grails-web-databinding/src/main/groovy/grails/web/databinding/MissingPropertyClearer.java
 delete mode 100644 grails-web-databinding/src/main/groovy/org/apache/grails/web/databinding/aot/DataBindingRuntimeHints.java
 delete mode 100644 grails-web-databinding/src/main/resources/META-INF/spring/aot.factories
 delete mode 100644 grails-web-databinding/src/test/groovy/grails/web/databinding/DataBindingUtilsSpec.groovy
 delete mode 100644 grails-web-databinding/src/test/groovy/grails/web/databinding/DenyByDefaultConfigSpec.groovy
 delete mode 100644 grails-web-databinding/src/test/groovy/org/grails/web/databinding/bindingsource/XmlDataBindingSourceCreatorSpec.groovy
 delete mode 100644 grails-web-mvc/src/test/groovy/org/grails/web/servlet/mvc/GrailsDispatcherServletHiddenMethodSpec.groovy
 delete mode 100644 grails-web-mvc/src/test/groovy/org/grails/web/servlet/mvc/GrailsDispatcherServletSpec.groovy
 delete mode 100644 grails-web-mvc/src/test/groovy/org/grails/web/servlet/mvc/GrailsWebRequestFilterSpec.groovy
 delete mode 100644 grails-web-mvc/src/test/resources/logback-test.xml
 delete mode 100644 grails-web-url-mappings/src/main/groovy/org/apache/grails/web/mapping/aot/UrlMappingRuntimeHints.java
 delete mode 100644 grails-web-url-mappings/src/main/groovy/org/grails/web/mapping/RuntimeConstraintEvaluator.java
 rename grails-web-url-mappings/src/{cli => main}/groovy/org/grails/web/mapping/reporting/AnsiConsoleUrlMappingsRenderer.groovy (86%)
 delete mode 100644 grails-web-url-mappings/src/main/resources/META-INF/additional-spring-configuration-metadata.json
 delete mode 100644 grails-web-url-mappings/src/main/resources/META-INF/spring/aot.factories
 delete mode 100644 grails-web-url-mappings/src/test/groovy/grails/web/mapping/WildcardResourcesMappingSpec.groovy
 delete mode 100644 grails-web-url-mappings/src/test/groovy/org/grails/web/mapping/EffectiveMethodLinkGenerationSpec.groovy
 delete mode 100644 grails-web-url-mappings/src/test/groovy/org/grails/web/mapping/RuntimeConstraintEvaluatorSpec.groovy
 delete mode 100644 grails-web-url-mappings/src/test/groovy/org/grails/web/mapping/UrlMappingSegmentFilterSpec.groovy
 delete mode 100644 grails-web-url-mappings/src/test/groovy/org/grails/web/mapping/mvc/HiddenHttpMethodHandlerMappingSpec.groovy
 delete mode 100644 grails-web-url-mappings/src/test/groovy/org/grails/web/mapping/mvc/UrlMappingNameResolutionSpec.groovy
 delete mode 100644 grails-web-url-mappings/src/test/groovy/org/grails/web/mapping/mvc/UrlMappingsInfoHandlerAdapterAsyncSpec.groovy
 rename grails-web-url-mappings/src/{test-cli => test}/groovy/org/grails/web/mapping/reporting/AnsiConsoleUrlMappingsRendererSpec.groovy (95%)


(grails-core) 01/02: fix(neo4j): assert background thread completion in OptimisticLockingSpec

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

jdaugherty pushed a commit to branch fix/optimistic-locking-spec-join-assert
in repository https://gitbox.apache.org/repos/asf/grails-core.git

commit cd0502f3bc84a3d62a50b0035b7be33867c36fe7
Author: Walter Duque de Estrada <wb...@mac.com>
AuthorDate: Thu Jul 30 16:58:47 2026 -0500

    fix(neo4j): assert background thread completion in OptimisticLockingSpec
    
    Follow-up to #16070. Copilot's review flagged that the second test's
    Thread.start { ... }.join(2000) can return on timeout without the
    background thread having actually finished, so the "same headroom
    rationale" comment added in #16070 was inaccurate there: the sleep
    could still be masking a race with thread completion, unlike the
    first test where the unbounded join() guarantees it. Capture the
    thread and assert !isAlive() after the bounded join so a slow runner
    fails loudly instead of silently racing the assertions that follow.
    
    Co-Authored-By: Claude Sonnet 5 <no...@anthropic.com>
---
 .../grails/gorm/tests/OptimisticLockingSpec.groovy  | 21 +++++++++++----------
 1 file changed, 11 insertions(+), 10 deletions(-)

diff --git a/grails-data-neo4j/grails-datastore-gorm-neo4j/src/test/groovy/grails/gorm/tests/OptimisticLockingSpec.groovy b/grails-data-neo4j/grails-datastore-gorm-neo4j/src/test/groovy/grails/gorm/tests/OptimisticLockingSpec.groovy
index 318bc0eb6f..e0160d0efa 100644
--- a/grails-data-neo4j/grails-datastore-gorm-neo4j/src/test/groovy/grails/gorm/tests/OptimisticLockingSpec.groovy
+++ b/grails-data-neo4j/grails-datastore-gorm-neo4j/src/test/groovy/grails/gorm/tests/OptimisticLockingSpec.groovy
@@ -130,17 +130,18 @@ class OptimisticLockingSpec extends GormDatastoreSpec {
         when:
         o = OptLockNotVersioned.get(o.id)
 
-        try {
-            Thread.start {
-                OptLockNotVersioned.withNewSession { s ->
-                    def reloaded = OptLockNotVersioned.get(o.id)
-                    reloaded.name += ' in new session'
-                    reloaded.save(flush: true)
-                }
-            }.join(2000)
-        } catch (InterruptedException e) {
-            // ignore
+        def backgroundUpdate = Thread.start {
+            OptLockNotVersioned.withNewSession { s ->
+                def reloaded = OptLockNotVersioned.get(o.id)
+                reloaded.name += ' in new session'
+                reloaded.save(flush: true)
+            }
         }
+        // Unlike the unbounded join() above, join(timeout) can return before the thread
+        // finishes; assert completion explicitly so a slow runner fails loudly instead of
+        // silently racing the assertions below.
+        backgroundUpdate.join(5000)
+        assert !backgroundUpdate.isAlive()
         // Same headroom rationale as "Test optimistic locking" above.
         sleep 5000
 


(grails-core) 02/02: fix(neo4j): fix cross-session commit races and de-flake OptimisticLockingSpec

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

jdaugherty pushed a commit to branch fix/optimistic-locking-spec-join-assert
in repository https://gitbox.apache.org/repos/asf/grails-core.git

commit 169193b0147747723d017b592a4584e83b3bf6f1
Author: Walter Duque de Estrada <wb...@mac.com>
AuthorDate: Tue Aug 18 10:12:52 2026 -0500

    fix(neo4j): fix cross-session commit races and de-flake OptimisticLockingSpec
    
    Both background-thread updates were never actually committed/visible:
    the 'version false' test read/wrote inside a bare withNewSession (no
    withTransaction, so the save never committed) against an uncommitted
    given: transaction (so the background session couldn't even see the
    entity), making its final assertions pass regardless of whether the
    concurrent write ever happened. The join(5000)/isAlive() completion
    check was also a false positive - a thread whose closure throws is
    equally not-alive.
    
    Commit the given: transaction before spawning the thread, wrap the
    background save in withTransaction, capture the background closure's
    outcome via an AtomicReference<Throwable> instead of trusting
    isAlive(), and use unbounded join() instead of a hard timeout. Add an
    intermediate read via a throwaway session so the background write is
    load-bearing for the test to pass. Replace both tests' fixed
    sleep(5000) heisenbug workaround with PollingConditions polling on
    real committed state, so a healthy run finishes in ~0.1-0.3s instead
    of always paying 5s, and a genuine failure gets a real diagnostic
    instead of racing past a guessed wait.
    
    Co-Authored-By: Claude Sonnet 5 <no...@anthropic.com>
---
 .../grails/gorm/tests/OptimisticLockingSpec.groovy | 60 ++++++++++++++++------
 1 file changed, 45 insertions(+), 15 deletions(-)

diff --git a/grails-data-neo4j/grails-datastore-gorm-neo4j/src/test/groovy/grails/gorm/tests/OptimisticLockingSpec.groovy b/grails-data-neo4j/grails-datastore-gorm-neo4j/src/test/groovy/grails/gorm/tests/OptimisticLockingSpec.groovy
index e0160d0efa..af066d406f 100644
--- a/grails-data-neo4j/grails-datastore-gorm-neo4j/src/test/groovy/grails/gorm/tests/OptimisticLockingSpec.groovy
+++ b/grails-data-neo4j/grails-datastore-gorm-neo4j/src/test/groovy/grails/gorm/tests/OptimisticLockingSpec.groovy
@@ -19,6 +19,8 @@
 
 package grails.gorm.tests
 
+import java.util.concurrent.atomic.AtomicReference
+
 import grails.gorm.annotation.Entity
 import org.grails.datastore.gorm.neo4j.Neo4jTransaction
 import org.grails.datastore.mapping.core.OptimisticLockingException
@@ -27,6 +29,7 @@ import org.grails.datastore.mapping.transactions.SessionHolder
 import org.neo4j.graphdb.GraphDatabaseService
 import org.neo4j.graphdb.Transaction
 import org.springframework.transaction.support.TransactionSynchronizationManager
+import spock.util.concurrent.PollingConditions
 
 /**
  * @author Burt Beckwith
@@ -96,11 +99,18 @@ class OptimisticLockingSpec extends GormDatastoreSpec {
                 }
             }
         }.join()
-        // The background thread's save is already synchronized via join() above; this sleep is
-        // headroom for the embedded Neo4j harness's own write durability, not thread completion.
-        // A noisy/loaded CI runner can push that past a couple of seconds - give it more room
-        // rather than risk a spurious failure (heisenbug).
-        sleep 5000
+        // The background thread's save is already synchronized via join() above; poll (rather
+        // than sleep a fixed duration) until an independent session observes it, since the
+        // embedded Neo4j harness's own write-durability/visibility lag can outlast any fixed
+        // guess (heisenbug) - a noisy/loaded CI runner has been seen pushing past 2s, and this
+        // adapts instead of gambling on a bigger number.
+        new PollingConditions(timeout: 10, initialDelay: 0.1, delay: 0.2).eventually {
+            def observedName
+            OptLockVersioned.withNewSession { s ->
+                observedName = OptLockVersioned.get(o.id).name
+            }
+            assert observedName == 'locked in new session'
+        }
 
         o.name += ' in main session'
         def ex
@@ -125,25 +135,41 @@ class OptimisticLockingSpec extends GormDatastoreSpec {
 
         given:
         def o = new OptLockNotVersioned(name: 'locked').save(flush: true)
+        session.transaction.commit()
+        session.transaction.nativeTransaction.close()
         session.clear()
 
         when:
         o = OptLockNotVersioned.get(o.id)
 
+        def failure = new AtomicReference<Throwable>()
         def backgroundUpdate = Thread.start {
+            try {
+                OptLockNotVersioned.withNewSession { s ->
+                    OptLockNotVersioned.withTransaction {
+                        def reloaded = OptLockNotVersioned.get(o.id)
+                        assert reloaded
+                        reloaded.name += ' in new session'
+                        reloaded.save(flush: true)
+                    }
+                }
+            } catch (Throwable t) {
+                failure.set(t)
+            }
+        }
+        backgroundUpdate.join()
+        // A thread that dies from an uncaught exception is also no longer alive, so join()
+        // alone can't distinguish a completed write from a crashed one; assert the captured
+        // outcome explicitly.
+        assert failure.get() == null
+        // Same cross-session visibility-lag rationale as "Test optimistic locking" above.
+        def nameAfterBackgroundUpdate
+        new PollingConditions(timeout: 10, initialDelay: 0.1, delay: 0.2).eventually {
             OptLockNotVersioned.withNewSession { s ->
-                def reloaded = OptLockNotVersioned.get(o.id)
-                reloaded.name += ' in new session'
-                reloaded.save(flush: true)
+                nameAfterBackgroundUpdate = OptLockNotVersioned.get(o.id).name
             }
+            assert nameAfterBackgroundUpdate == 'locked in new session'
         }
-        // Unlike the unbounded join() above, join(timeout) can return before the thread
-        // finishes; assert completion explicitly so a slow runner fails loudly instead of
-        // silently racing the assertions below.
-        backgroundUpdate.join(5000)
-        assert !backgroundUpdate.isAlive()
-        // Same headroom rationale as "Test optimistic locking" above.
-        sleep 5000
 
         o.name += ' in main session'
         def ex
@@ -159,6 +185,10 @@ class OptimisticLockingSpec extends GormDatastoreSpec {
         o = OptLockNotVersioned.get(o.id)
 
         then:
+        // Proves the background write actually landed before the main session's blind
+        // overwrite below; without it, these assertions would pass even if the background
+        // thread never ran.
+        nameAfterBackgroundUpdate == 'locked in new session'
         ex == null
         o.name == 'locked in main session'
     }