You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@grails.apache.org by bo...@apache.org on 2026/07/19 20:42:48 UTC

(grails-core) branch feat/neo4j-gorm-registry-migration updated (3e72281ac0 -> 761ee416c6)

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

borinquenkid pushed a change to branch feat/neo4j-gorm-registry-migration
in repository https://gitbox.apache.org/repos/asf/grails-core.git


 discard 3e72281ac0 fix(grails-data-neo4j): scope neo4j-java-driver pin to a dedicated grails-neo4j-bom
 discard 6f5975bf51 refactor(grails-data-neo4j): dedupe test/Jetty/driver build config, drop redundant BOM force
 discard 059aad2f11 fix(grails-test-examples): drop stale grailsSpringSecurityVersion property in neo4j test-data-service
 discard 1a42aaf1e6 Merge remote-tracking branch 'origin/feat/gorm-registry-core-impl' into feat/neo4j-gorm-registry-migration
 discard dca3d09c6c fix(grails-data-neo4j): resolve all 270 CodeNarc violations in grails-data-neo4j-core
 discard 7eedcb91cc refactor(grails-data-neo4j): rename example apps to base/hibernate5
 discard 0163e87554 refactor(grails-data-neo4j): rename grails-datastore-gorm-neo4j to grails-data-neo4j-core
 discard e2e4522931 feat(grails-forge): restore Neo4j GORM support
 discard 3afc76ae58 feat(grails-data-neo4j): restore test-data-service example app
 discard 0ca480de0d feat(grails-data-neo4j): restore neo4j-standalone example app
 discard a6aa7bd8cd feat: add dedicated Neo4j functional-test CI job and publish gating
 discard d580d61465 fix: rename gorm-neo4j-spring-boot to grails-data-neo4j-spring-boot
 discard 40b7aa1bf1 fix: BOM-manage neo4j-java-driver with a strictly constraint, not exclude
 discard 3be1f37632 fix: address jdaugherty's review feedback on consolidated Neo4j PR
 discard 10baa7b993 fix: restore copyAnnotations dedup guard needed by ServiceTransformation
 discard ba6fbb9515 Merge remote-tracking branch 'origin/feat/gorm-datastore-infra' into feat/gorm-registry-core-impl
 discard 51157ac1af fix: guard getTenantId() DISCRIMINATOR mode and close review-flagged coverage gaps
 discard 23f6b48cc7 fix: address review feedback on SessionResolver/AbstractDatastore architecture
    omit 58e7597811 chore(grails-data-neo4j): clean up Checkstyle/CodeNarc violations in grails-datastore-gorm-neo4j
    omit 8786d41e6d fix(grails-data-neo4j): declare intentional Jetty/neo4j-driver BOM overrides
    omit 20c0f8f7b6 feat(grails-data-neo4j): re-add example apps and docs into monorepo (PR4)
    omit 087b7bc109 feat: wire Neo4j adapter to GormRegistry's GormApiFactory mechanism
    omit e59c4bfe9e fix: avoid Groovy MOP getProperty interception in Neo4jDataStoreSpringInitializerSpec
    omit d97c869265 feat(grails-data-neo4j): fold standalone build into root settings.gradle
 discard 656b2cf559 Merge branch '8.0.x' into feat/gorm-datastore-infra
    omit c024658181 fix: resolve Neo4j regressions surfaced by rebasing onto Groovy 5
    omit c30b21fcdd fix: address Copilot review findings on PR #15816
    omit b5d3d7ae00 feat: migrate grails-data-neo4j to Groovy 4/Jakarta/GORM 8 baseline
    omit 61acfed040 docs: add Neo4j GormRegistry migration plan (PR1 baseline + PR2 wiring)
    omit 3914546f43 test: verify @Service+@CurrentTenant routing in DATABASE multi-tenancy mode
    omit 4d31ebdf40 fix: address Copilot review findings on PR #15780
    omit a78fe6ec42 chore: strip scope-creep config noise from the GormRegistry PR
    omit 978a161ede fix: resolve GORM regressions surfaced by the registry refactor
    omit d2999816bf test: @PendingFeature the pre-existing Mongo count-over-OR disjunction bug
    omit 39b725bfc7 fix: @CurrentTenant data services resolve the primary datastore for tenant management
    omit a2af31a55d test: isolate Mongo multi-tenancy specs from singleton GormRegistry pollution
    omit c14288989e fix: MultiTenant.eachTenant must not force current-tenant resolution
    omit 4d0b284291 fix: H7 disjunction/conjunction/negation operate on detachedCriteria
    omit ce7353732d test: align H7 core tests with the GormRegistry rewrite
    omit fa04725110 fix: H7 first/last(Map) inherit core's order-aware implementation
    omit 7ae28ec978 fix: implement find/findAll-by-example via findWhere/findAllWhere delegation
    omit 4643a360bc fix: apply pagination args before Query.list() in findAll-by-example
    omit 974dac2db5 fix: register MongoGormApiFactory so Mongo entities resolve a MongoStaticApi
    omit 5bf650c1d9 fix: honor getAll id order, null slots, and id conversion in Hibernate retrieveAll (H5 core 3→0)
    omit d394976e9c fix: resolve multi-tenant dynamic finder dispatch and tenant session passing (H5 core 6→3)
    omit 868db10ec8 fix: clear GormRegistry core-impl regressions (H5 core 42→6)
    omit cbf6453146 fix: restore null-tolerant service/datastore contracts in GormRegistry core
    omit 0b1f8e0c6c Fix MongoDB functional tests: fall back to enhancer API factory when no GormApiFactory registered
    omit 3ac4bd6390 fix: remove redundant this.datastore assignment in HibernateGormStaticApi
    omit f703035cb5 fix: resolve null datastore in H5/H7 validation and dynamic finder dispatch
    omit bd2751c584 fix: restore deprecated setDatastore and persistentEntity for H7 adapter compat
    omit d84e500734 fix: restore deprecated backward-compat API surface for adapter modules
    omit 8563416bd6 fix: restore deprecated GormEnhancer extension points for backward compatibility
    omit 0d10151426 style: remove unused ConnectionSource import and fix consecutive blank lines in HibernateGormEnhancer
    omit 53480dab5c fix: register HibernateGormApiFactory in registerConstraints; update affected tests
    omit 909bad4888 fix: mode-aware tenant lookup and bound DatastoreResolvers in GormRegistry
    omit d9b5d91664 fix: distinguish datasource connection qualifier from tenant ID in AbstractGormApi.execute()
    omit 702b21e05f fix: restore registerConstraints hook and fix MongoStaticApi fields dropped by scaling refactor
    omit a959465ef4 fix: restore registerConstraints to GormEnhancer dropped in scaling refactor
    omit a3adf3b71e feat: GORM O(M+N) scaling — GormRegistry, GormEnhancer, and core API refactor
    omit 0f8e6c6572 fix: address Copilot review findings on PR #15779
    omit f94a7727fd fix: widen MongoMappingContext.initialize visibility to public
    omit 63612dad77 fix: restore concrete Service trait methods to fix @CompileStatic compilation
    omit be356158f5 feat: add SessionResolver infrastructure and extend core datastore APIs
     add d175d24533 Mask exception request parameters case-insensitively
     add 55beb5e258 Address exception masking review feedback
     add fef6e81876 Adjust exception masking tests for 7.0.x
     add 0f4eae9959 Merge pull request #15810 from apache/fix/exception-masking-case-insensitive
     add ba8156e51f Clarify exception resolver request logging metadata
     add 642bcd5006 Merge pull request #15811 from apache/fix/request-logging-metadata-default
     add 796d6b3d55 Merge branch '7.0.x' into 7.1.x
     add af71689aa2 Merge branch '7.1.x' into 7.2.x
     add bb5cecae76 Merge branch '7.2.x' into 8.0.x
     add 7e4d087e57 Add Hibernate 7 Forge Feature
     add 4d81ad43af updating command switches, renaming Gorm => Grails Data, & renaming Hibernate => Hibernate5
     add 3b39d9c313 Add what's new
     add d8b7b61d9e Merge remote-tracking branch 'upstream/8.0.x' into feat/addHibernate7ForgeFeature
     add 3d10537b86 Address review feedback
     add eb8fc5480c Update analytics spec for the GormImpl.HIBERNATE to HIBERNATE5 rename
     add c68ab8410f Update command line docs for the gorm-hibernate7 feature and Grails Data terminology
     add e738e8fe3f Move the datasource prefix constant to DatabaseDriverConfigurationFeature
     add e5bd4d1b9c Reject invalid Grails Data implementation values on the create endpoints
     add b668d64db4 Address review feedback: restore Hibernate 5 auto-add for SQL drivers with MongoDB, use ConversionContext#reject, remove unused imports
     add 003f13890e Merge branch '8.0.x' into feat/addHibernate7ForgeFeature
     add 3fcb6054a2 Merge pull request #15944 from apache/feat/addHibernate7ForgeFeature
     add fa25f0a442 Merge remote-tracking branch 'upstream/8.0.x' into 8.0.x
     add c3289a8722 Make AutoTimestampEventListener temporary disabling thread-safe
     add 18e9fa3a8a docs, multi-thread documentation, and removing dead code
     add d62ae0a41a Add available-locale discovery and a language selector to i18n
     add b756b53538 Include plugin-contributed locales in available-locale discovery
     add 081acf99e3 Merge remote-tracking branch 'upstream/8.0.x' into feat/i18n-available-locale-selector
     add 8f9d7aa2bc Merge branch '8.0.x' into feat/i18n-available-locale-selector
     add 170ae02d0f Cover available-locale wiring, plugin lifecycle and taglib branches
     add 9d79f67d09 Address review: type-based resolver lookup, consistent default locale, stricter suffix validation
     add 49ca3b9e6f Merge pull request #15940 from codeconsole/feat/i18n-available-locale-selector
     add 40be754c68 Restore lenient config handling for Spring configuration
     add 58b73a8bb8 Merge branch '7.0.x' into worktree-fix-15818-conversion-service
     add c08999b0df feedback - update comment
     add 105ab336fa Merge pull request #15949 from apache/worktree-fix-15818-conversion-service
     add 7a0d91199b Merge branch '7.0.x' into 7.1.x
     add 45f6722c13 Merge branch '7.1.x' into 7.2.x
     add 60f10a6369 Merge branch '7.2.x' into 8.0.x
     add d7b393ca72 Exclude the Spring DM example from reproducible (release) builds
     add dcb0c95080 Add CI workflow for verification (must still verify locally)
     add 3c68c8e374 Merge remote-tracking branch 'upstream/7.0.x' into 7.1.x
     add 8f96086a0f Merge branch '7.1.x' into 7.2.x
     add b00e83e6d7 Merge branch '7.2.x' into 8.0.x
     add e18c874abd remove missed custom pomDevelopers
     add 2d43860d11 Fix test app reproducibility
     add 7ba62aa93e Fix ui plugin reproducibility
     add 733d8ce85a Handle already generated profile.yml to support build reproducibility
     add 4f4f5b8f9b Do not publish the testapp profile, its internal only
     add 12ef4a9675 Merge branch '7.0.x' into 7.1.x
     add 3a3d98aaa5 Merge branch '7.1.x' into 7.2.x
     add c317eef8e9 Merge branch '7.2.x' into 8.0.x
     add c841b4f932 Merge branch '8.0.x' into fix/autotimestamp-thread-safety-8.0.x
     add 43e59b4593 Cover the codecov-flagged branches in AutoTimestampEventListener
     add 81aa7c2c3b Merge pull request #15954 from codeconsole/fix/autotimestamp-thread-safety-8.0.x
     add f2c1244436 Add workaround for GROOVY-12146
     add 06f5567bf6 Merge pull request #15963 from jdaugherty/8.0.x
     add 7d85988e8a Register the scaffolding view resolver without the bean DSL
     add 2c69b675bd Convert the scaffolding definition post-processor to Java
     add 85c05b4260 Rely on implicit SAM coercion for the bean registrar
     add 23a83ed176 Derive the post-processor order from GroovyPagesPostProcessor.ORDER
     add be023f8e42 Pin the pipeline ordering contract to the collaborators' constants
     add f40b21bf4d Convert to groovy
     add 10960ba19c Merge pull request #15966 from codeconsole/refactor/scaffolding-static-descriptor
     add 440c26cd00 Apply SiteMesh 3 decoration at the bean-definition level
     add 321033c3f8 Compile the SiteMesh 3 plugin descriptor statically
     add 31a229e323 Tighten the SiteMesh 3 plugin description and registration site
     add 84b5428237 Satisfy checkstyle operator-wrap rule
     add db9d18f4f4 Rely on implicit SAM coercion for the bean registrar
     add 6935b3e23a Merge branch '8.0.x' into fix/sitemesh3-viewresolver-definition-wrap
     add 65b8710a29 Suppress the upstream zero-wrap warning when the definition wrap is in place
     add ccbc50c6c7 Implement the definition wrap as upstream's bean-definition mode
     add d1cda68bbf Fix GspAutoConfiguration's use of the relocated property defaults
     add ba2c2ec223 Enforce mutual exclusion with grails-layout instead of accommodating it
     add 32bb99760f Tolerate a combined SiteMesh 2/3 classpath with a loud warning
     add eb50ef7f0c Simplify against SiteMesh 3.3.0-M2
     add 9513a718a0 Groovy conversion & fix sitemesh 2 apps from transitively including sitemesh3
     add d3d445da01 Merge pull request #15964 from codeconsole/fix/sitemesh3-viewresolver-definition-wrap
     add f3e9baa5c7 Fix domainClass plugin being registered and loaded twice
     add 856e5b2a09 Merge pull request #15970 from codeconsole/fix/duplicate-plugin-registration
     add 8f75d23ad6 Add testing support option to introduce latency
     add 75605d7db1 feedback: abandon request on interrupt, reject non-finite probability, deflake timing assertions, doc caveats
     add 8a86bed606 Merge pull request #15937 from apache/feat/latency-testing
     add 8f39bb74f2 Fix normalization script
     add 1711851a16 Log plugin loaded successfully messages at DEBUG instead of INFO
     add cd79d14ecc Add a single INFO summary listing loaded plugins in load order
     add 1d5e58f990 Merge pull request #15969 from codeconsole/fix/plugin-loaded-log-level
     add 33964e780e Make the spring security acl jar reproducible
     add d090dedf08 Fix flaky tests
     add a5ef5459d8 Fix generated logback-spring.xml hiding WARN and INFO messages
     add f69ce63dea Merge pull request #15973 from codeconsole/fix/simplify-logback-spring-xml
     add 08bd0bfbeb Use unique names so tests do not overlap
     add 1c00628f90 Upgrade SiteMesh to 3.3.0-M3
     add 221e4f61c3 Merge pull request #15975 from codeconsole/deps/sitemesh-3.3.0-M3
     add aaf840c6b9 Fix embedded where queries
     add c179aacdc0 Address flaky test
     add acbf185125 Expand test coverage & fix scenarios found from expansion
     add 8e7bab6b3c Move duplicated specs to the tck
     add 385d24631d More fixes for where queries
     add bc37a58337 Merge branch '8.0.x' into fix/where-queries-embedded
     add c8bc797642 Expanding test coverage
     add 6f4a112db5 Standardize on the tck properties to be in the same location (gradle)
     add eaf194dfae Address review feedback on embedded where-query fix
     add 7dd44ccf24 Merge pull request #15962 from apache/fix/where-queries-embedded
     add ff450b503d Internationalize the default welcome page
     add e4a74bbda8 Localize two labels flagged in translation review
     add 6154a2f016 Backfill missing i18n keys and repair broken MessageFormat patterns
     add 4d455f6013 Bring back the Grails cups on a redesigned welcome page
     add 2a4a04ea85 Add a controllers dropdown to the default layout navbar
     add 36811fde72 Internationalize the default layout chrome
     add 4ea1109540 Add status, artefacts, actuators and plugins navigation; pin the default language
     add bcc0e43a9a Keep the navbar minimal; list actuator endpoints on the welcome page
     add ae1440e477 Report the Spring Security version when the dependency is present
     add e83c0a5c1d Mirror the welcome templates into the profile skeleton
     add dc98332ce4 Remove translator attribution headers from the message bundles
     add e03e68c5ff Address review feedback on the welcome page templates
     add c03073e51a Merge pull request #15974 from codeconsole/feat/forge-welcome-page-i18n
     add 937f5b3bff Include the charset when DefaultHtmlRenderer sets the content type
     add 814b384df6 Make the renderer encoding configurable via grails.converters.encoding
     add bb78ee0197 Resolve grails.converters.encoding from the environment via @Value
     add 0a45f47908 Deduplicate the grails.converters.encoding config metadata
     add d12538cd18 Merge pull request #15976 from codeconsole/fix/html-renderer-charset
     add 56d081a856 Fix normalization script
     add 89ff899024 Improve the verification process
     add e43a03e878 Fix command ordering in profile.yml
     add 082f834c4d Merge pull request #15978 from apache/fix/profile-reproducibility
     add 69139fa99e [skip ci] Release v8.0.0-M3
     add c0ed9f6252 [skip ci] Bump version to 8.0.0-SNAPSHOT
     add 9b81874e91 Merge pull request #15983 from apache/merge-back-8.0.0-M3
     add 16c17edee5 Document Grails 8 API compatibility breaks
     add 3793e0ad59 Address Copilot feedback on compatibility docs
     add 00d0bc9359 Fix malformed guide anchor references
     add d861fdf3ce Fix cross-page guide links
     add d05d4d773d Remove stale Shiro guide metadata
     add da2131c71c Preserve profile placeholder in command paths
     add 2f58a2429e Address guide rendering review findings
     add 90d4430b21 Merge branch '8.0.x' into docs/grails-8-api-compat-notes
     add 075ee48b6a Merge branch '8.0.x' into docs/grails-8-api-compat-notes
     add 71cad03519 Merge 8.0.x into docs/grails-8-api-compat-notes
     add 47152e2e76 Merge pull request #15823 from apache/docs/grails-8-api-compat-notes
     add 2acc785e57 Stabilize recurring CI flaky tests in functional/example apps
     add 5eaf9edbcf fix: apply Page Object pattern to GreetingControllerFunctionalSpec
     add 45eed86868 fix: drop redundant @Retry backstop from GreetingControllerFunctionalSpec
     add 7e1fd8cf84 Merge branch '8.0.x' into fix/flaky-tests
     add e500f19a9c fix: drop @Retry backstop from UserControllerSpec/UserCommunityControllerSpec
     add 1b22095503 Merge branch '8.0.x' into fix/flaky-tests
     add 0bed2fb34a Merge 8.0.x into fix/flaky-tests
     add 21670d3d86 Use configured Geb wait timeout in scaffolding login/logout pages
     add 0dad092042 Merge pull request #15793 from apache/fix/flaky-tests
     add e27a4a0322 Add back undertow support
     add 4ea125a1eb Repackage undertow classes for JPMS compatibility
     add 3e40c9b104 Revert documentation changes
     add 77723a6baf Update javadoc for class package changes
     add 532f94c7d5 Merge pull request #15985 from apache/feature/undertow
     add c1a579b2ad Fix forge reproducibility issues
     add b980413820 Merge pull request #15986 from apache/fix/forge-groovy-reproducibility
     add b7ceb5375d Grant native access in CLI and wrapper start scripts
     add 0a726c6500 Replace local StringBuffer usage with StringBuilder
     add ba15d890b5 correcting old javadoc problem
     add 0c63c26a3a Merge pull request #15990 from apache/refactor/legacy-jdk-types
     add d1a3f69dc7 Declare processResources ReplaceTokens values as task inputs
     add eed1e36d0d Merge pull request #16006 from codeconsole/processresources-token-inputs
     add 52bf74ee81 Merge branch '8.0.x' into fix/forge-cli-native-access
     add 76d9f18659 Merge pull request #15989 from codeconsole/fix/forge-cli-native-access
     add 36ad682bdf Split CLI dependencies from the runtime classpath
     add 6fdfaf8675 Remove explicit console dependency
     add e1bac4aa61 Adjust test configuration
     add 237cf03945 Move grailsCli related gradle configuration to a single gradle plugin
     add 01ddd85d57 Cleanup code style
     add b4c8828cfa Functional test app was missing functional dependency substitution
     add 45632e28f5 Ensure hibernate5 bom is used consistently for hibernate5 projects
     add 8043852418 Merge branch '8.0.x' into fix/split-cli-dependencies
     add ea3064a5d9 Fix cli gradle capabilities from being published
     add 329cc6a703 CommandFactoriesTransformation should be able to register commands compiled from src/cli sources.
     add c6739f408e Replace ambgious commands
     add 1fd7f7d405 Merge branch '8.0.x' into fix/split-cli-dependencies
     add 42ef1ac1c6 Wire same-build CLI companions via project capability + cover discovery
     add a441ac3132 Fix factories dedup, BOM companion constraints, and companion build identity
     add 82532d4ee8 Support customized cli companion coordinates end to end
     add 773152144d Document the upgrade impact of the CLI split
     add d6d49e85f3 Fix the command arguments example in the custom-commands guide
     add d1e4af1162 Merge pull request #15948 from apache/fix/split-cli-dependencies
     add e64bd9d80e Enforce HTTPS for wrapper remote repositories
     add fecd1172b3 Address wrapper redirect review feedback
     add ac9bbc91e0 Address wrapper repository review feedback
     add 6689ebf5eb Align wrapper and Forge repository HTTPS validation
     add 2ee817429e Merge remote-tracking branch 'origin/8.0.x' into fix/wrapper-https-enforcement
     add e8ce969643 Harden wrapper HTTPS enforcement per review feedback
     add d42672802c Reject malformed remote wrapper repository overrides
     add a1ea4c8e9f Preserve repository fallback and drive-relative local repos
     add 8be73fd71f Align Forge Windows repository path handling with the wrapper
     add 6704c1d56b Fix OperatorWrap style in GrailsWrapperRepo
     add 6723a29349 feedback - simplify wrapper windows handling, support alises, adding tests, and making sure all implementations work the same
     add 26d1c1036b Merge pull request #15809 from apache/fix/wrapper-https-enforcement
     add 38902374f6 Convert remaining plugin descriptors from doWithSpring() to beanRegistrar()
     add 373528b3b7 Fix functional-test regressions in the bean-registrar conversions
     add f80b1cf8fe Address review feedback on the bean-registrar conversions
     add 3dc84a7b17 Auto-configure the controllers exceptionHandler default
     add 285a4f31d1 Auto-configure the cache plugin's default cache manager and key generator
     add 6cf1eacf9e Merge branch '8.0.x' into refactor/bean-registrars
     add fc6ac88995 Address review feedback: mirror boot order in defineBeans, gate cache auto-config, guard redis definitions
     add 7977c93ed7 Merge branch '8.0.x' into refactor/bean-registrars
     add 76bdd8c079 Address matrei review feedback
     add 3a1a6f82d8 Merge pull request #15994 from codeconsole/refactor/bean-registrars
     add bee4a4b1b0 Bump managed jQuery webjar to 4.0.0 in the BOM
     add ae8fcdcfb0 Add show-by-id and navbar controller filter to the create-app welcome page
     add ea78cf8bb9 Document the jQuery 4.0.0 webjar upgrade in the Grails 8 upgrade guide
     add 0e28a4d59f Fix welcome-page spinner ajax binding and touch autofocus
     add 638e9871dc Sort the welcome-page language selector by autonym
     add bdcb488a36 Use a fixed ROOT collator for the language selector ordering
     add f1cfb19bf4 Sort available locales with a ROOT collator in AvailableLocaleResolver
     add 18268189fe Add render modes and a body form to g:localeSelect
     add 485ff7a452 Use the g:localeSelect body form in the create-app welcome page
     add 3af80d727e Simplify the jQuery pin-back note in the 8.0.x upgrade guide
     add 81a9f3f4e0 Make the create-app welcome page artefact list switchable
     add 4174b63ebe Surface runtime internals on the create-app welcome page
     add cb95eb5f59 Show the request filter pipeline on the create-app welcome page
     add d18ca672f8 Stack the welcome-page cards in two columns to remove dead space
     add 0223d138a0 Restyle the spring-security login and denied pages with Bootstrap
     add cc06c5dca7 Bring spring-security i18n to locale parity with create-app
     add d7b4932afa Add Traditional Chinese (zh_TW) create-app welcome translations
     add a056c21434 Rewrite the spring-security-ui plugin on jQuery 4 and Bootstrap 5
     add a350e53822 Convert the remaining spring-security views and templates to Bootstrap
     add b506a5b067 Integrate the spring-security-ui screens into the host application layout
     add a1d5f25f4c Respect allowedMethods on the create-app controller listings
     add dce86c62d0 Show POST-only controllers disabled in the navbar dropdown
     add dbedd0108d Invoke POST-only controllers through a form in the listings
     add 1fa628162f Document the spring-security-ui Bootstrap rewrite in the upgrade guide
     add ebcf71697e Update the spring-security test apps and fixtures for the Bootstrap rewrite
     add c312e5e9df Fix spring-security-ui functional tests after Bootstrap rewrite
     add 7750a3c81a Remove legacy main.css from spring-security-ui test apps
     add 94993c8701 Fix locale selection, active matching, zh_TW forge wiring and missing i18n keys
     add ae336d9aab Add a URL Mappings panel with an interactive resolver to the welcome page
     add 80f26ff334 Merge branch '8.0.x' into feat/create-app-ui
     add 94e3f4bc18 Link framework tag libraries to their groovydoc on the welcome page
     add 041c889826 Group welcome-page domains by plugin with opt-in row counts
     add e99e27139b Merge branch '8.0.x' into feat/create-app-ui
     add 47e8ebe933 Address review feedback on localeSelect, welcome diagnostics and s2ui buttons
     add 88814b4c5d Merge remote-tracking branch 'upstream/8.0.x' into feat/create-app-ui
     add 8a8d5c114f Add a dual-mode sign-in affordance to the create-app navbar
     add 4e348c3949 Add a Spring Boot Starter Security feature to Grails Forge
     add cbfce2fc93 Show full values as tooltips on the welcome status cards
     add 47da75f9fa Add Grails Spring Security plugin and UI plugin features to Grails Forge
     add e2d83f7ba2 Align the Grails Spring Security plugin feature with the UI flavor's domain model
     add 9aca8df30f Harden the security features' generated runtime after live verification
     add 97df5387b8 Make the Spring Security UI feature supplemental to the core plugin feature
     add b21c25d753 Replace the login password-toggle emoji with Bootstrap icon toggles on every login UI
     add f648df7b53 Render navActions after language and theme in the navbar
     add d98fe6573b Expose feature relationship metadata through the Forge API
     add 89338b9227 Merge pull request #15987 from codeconsole/feat/create-app-ui
     add 7f5c8675bb Fix afterEvaluate race between applyGrailsBom and GrailsCliGradlePlugin
     add 9f751d16be Fix review feedback: preserve plugin identity/idempotency, add regression test
     add 7804f4b011 Merge pull request #16009 from codeconsole/fix/bom-cli-afterEvaluate-ordering
     add 2a32b9661e Simplify forge deployments to speed up release times
     add 2a9adf8619 Remove TestLens setup from forge deploy workflows since they run no tests
     add 5c285ef03a Merge pull request #15984 from apache/ci/faster-forge-deploys
     add fced1db76c Update the grails-gradle-publish plugin to the staged 1.0.0-M2 version
     add ce1884f8f7 Merge pull request #16012 from apache/chore/update-publish-plugin
     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 6cf78291cb docs: add Neo4j GormRegistry migration plan (PR1 baseline + PR2 wiring)
     add a1524e1ccd feat: migrate grails-data-neo4j to Groovy 4/Jakarta/GORM 8 baseline
     add 7406988dcb fix: address Copilot review findings on PR #15816
     add 958e6bcb64 fix: resolve Neo4j regressions surfaced by rebasing onto Groovy 5
     add fe900b9a65 feat(grails-data-neo4j): fold standalone build into root settings.gradle
     add acd751d57c fix: avoid Groovy MOP getProperty interception in Neo4jDataStoreSpringInitializerSpec
     add 8d57c60593 feat: wire Neo4j adapter to GormRegistry's GormApiFactory mechanism
     add ad91de2a02 feat(grails-data-neo4j): re-add example apps and docs into monorepo (PR4)
     add 43a19a40ce fix(grails-data-neo4j): declare intentional Jetty/neo4j-driver BOM overrides
     add d18ec53586 chore(grails-data-neo4j): clean up Checkstyle/CodeNarc violations in grails-datastore-gorm-neo4j
     add ea51f1a12b fix: address jdaugherty's review feedback on consolidated Neo4j PR
     add 4c34ff23a7 fix: BOM-manage neo4j-java-driver with a strictly constraint, not exclude
     add 2faa32618e fix: rename gorm-neo4j-spring-boot to grails-data-neo4j-spring-boot
     add 34f23c7bf9 feat: add dedicated Neo4j functional-test CI job and publish gating
     add 827b9d7235 feat(grails-data-neo4j): restore neo4j-standalone example app
     add bb14409b85 feat(grails-data-neo4j): restore test-data-service example app
     add 43ba5bc4a7 feat(grails-forge): restore Neo4j GORM support
     add 8052f234ed refactor(grails-data-neo4j): rename grails-datastore-gorm-neo4j to grails-data-neo4j-core
     add 5a0ad030c6 refactor(grails-data-neo4j): rename example apps to base/hibernate5
     add a780ce0f5d fix(grails-data-neo4j): resolve all 270 CodeNarc violations in grails-data-neo4j-core
     add 4be6be5de6 fix(grails-test-examples): drop stale grailsSpringSecurityVersion property in neo4j test-data-service
     add 5f7d8db1d7 refactor(grails-data-neo4j): dedupe test/Jetty/driver build config, drop redundant BOM force
     add 8a70751ba9 fix(grails-data-neo4j): scope neo4j-java-driver pin to a dedicated grails-neo4j-bom
     add 447d1b284e fix(grails-data-neo4j): remove dead GormEnhancer overrides in Neo4jDatastore
     add 4ecf6d87cf fix(grails-data-neo4j): implement embedded-component support and fix basic-collection 'in' queries
     add 960b59879b fix(grails-data-neo4j): add missing jakarta.servlet-api test dep; fix CodeNarc GString nit
     add 761ee416c6 fix(grails-forge): update GormImplSpec's stale 'neo4j' expectation

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   (3e72281ac0)
            \
             N -- N -- N   refs/heads/feat/neo4j-gorm-registry-migration (761ee416c6)

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.

No new revisions were added by this update.

Summary of changes:
 .github/workflows/forge-deploy-next.yml            |   45 +-
 .github/workflows/forge-deploy-prev-snapshot.yml   |   45 +-
 .github/workflows/forge-deploy-prev.yml            |   45 +-
 .github/workflows/forge-deploy-release.yml         |   65 +-
 .github/workflows/forge-deploy-snapshot.yml        |   45 +-
 .github/workflows/release-verify.yml               |  129 ++
 INSTALL                                            |    3 +-
 NOTICE                                             |   10 +
 .../apache/grails/buildsrc/CompilePlugin.groovy    |    7 +
 build.gradle                                       |    7 +
 dependencies.gradle                                |   21 +-
 etc/bin/normalize_annotations.groovy               |  154 +++
 etc/bin/verify-reproducible.sh                     |    6 +
 etc/bin/verify.sh                                  |  123 +-
 gradle/cli-companion-bom-constraints.gradle        |   41 +
 gradle/functional-test-config.gradle               |   29 +-
 gradle/grails-data-tck-config.gradle               |    8 +-
 gradle/groovy-compile-configscript.groovy          |   73 ++
 gradle/hibernate5-test-config.gradle               |    5 +-
 gradle/hibernate7-test-config.gradle               |    5 +-
 gradle/publish-root-config.gradle                  |    4 +-
 .../web/async/ControllersAsyncGrailsPlugin.groovy  |   19 +-
 .../async/ControllersAsyncGrailsPluginSpec.groovy} |   34 +-
 grails-bom/base/build.gradle                       |   20 +
 grails-bom/default/build.gradle                    |    4 +
 grails-bom/hibernate5-micronaut/build.gradle       |    4 +
 grails-bom/hibernate5/build.gradle                 |    4 +
 grails-bom/hibernate7-micronaut/build.gradle       |    4 +
 grails-bom/hibernate7/build.gradle                 |    4 +
 grails-bom/micronaut/build.gradle                  |    4 +
 .../grails/plugin/cache/CacheGrailsPlugin.groovy   |   28 +-
 .../cache/GrailsCacheAutoConfiguration.groovy      |   69 ++
 ...rk.boot.autoconfigure.AutoConfiguration.imports |    1 +
 .../plugin/cache/CacheGrailsPluginSpec.groovy      |   73 ++
 .../cache/GrailsCacheAutoConfigurationSpec.groovy  |  108 ++
 .../common/compiler/GroovyTransformOrder.groovy    |    7 +
 grails-console/build.gradle                        |   10 +
 .../GrailsApplicationContextCommandRunner.groovy   |    5 +-
 .../ControllerBeanDefinitionsPostProcessor.groovy  |  100 ++
 .../controllers/ControllersAutoConfiguration.java  |   14 +
 .../web/controllers/ControllersGrailsPlugin.groovy |   51 +-
 ...ntrollerBeanDefinitionsPostProcessorSpec.groovy |   99 ++
 .../ControllersAutoConfigurationSpec.groovy        |   80 +-
 .../controllers/ControllersGrailsPluginSpec.groovy |   61 +
 .../converters/ConvertersGrailsPlugin.groovy       |   37 +-
 .../converters/ConvertersGrailsPluginSpec.groovy   |   65 +
 grails-core/build.gradle                           |   13 +
 .../grails/core/cli}/ApplicationCommand.groovy     |    3 +-
 .../cli}/ApplicationContextCommandRegistry.groovy  |   11 +-
 .../grails/core/cli}/ConfigReportCommand.groovy    |    2 +-
 .../grails/core/cli}/ExecutionContext.groovy       |    3 +-
 .../core/cli}/GrailsApplicationCommand.groovy      |   10 +-
 .../compiler/CommandFactoriesTransformation.groovy |  105 ++
 .../core/cli}/io/FileSystemInteraction.groovy      |    3 +-
 .../core/cli}/io/FileSystemInteractionImpl.groovy  |    3 +-
 .../core/cli}/template/TemplateException.groovy    |    2 +-
 .../core/cli}/template/TemplateRenderer.groovy     |    2 +-
 .../core/cli}/template/TemplateRendererImpl.groovy |    6 +-
 .../cli/resources/META-INF/grails-cli.factories    |   18 +
 ...org.codehaus.groovy.transform.ASTTransformation |    1 +
 .../src/main/groovy/grails/boot/GrailsApp.groovy   |    9 +-
 .../grails/plugins/DefaultGrailsPluginManager.java |   13 +-
 .../core/plugins/DefaultPluginDiscovery.java       |   22 +-
 .../compiler/injection/FactoriesFileWriter.groovy  |  140 +++
 .../GlobalGrailsClassInjectorTransformation.groovy |   86 +-
 .../core/io/support/GrailsFactoriesLoader.groovy   |   29 +-
 .../src/main/resources/META-INF/grails-plugin.xml  |    1 -
 .../boot/GrailsAppEnvironmentConversionSpec.groovy |   67 +
 .../plugins/DefaultGrailsPluginManagerSpec.groovy  |   53 +
 .../core/cli}/ConfigReportCommandSpec.groovy       |    2 +-
 .../CommandFactoriesTransformationSpec.groovy      |   45 +
 .../grails/core/plugins/PluginDiscoverySpec.groovy |   72 ++
 .../injection/FactoriesFileWriterSpec.groovy       |  124 ++
 ...balGrailsClassInjectorTransformationSpec.groovy |    4 +-
 .../graphql/plugin/GormGraphqlGrailsPlugin.groovy  |  138 ++-
 .../plugin/GormGraphqlGrailsPluginSpec.groovy      |   82 ++
 .../query/AbstractHibernateCriterionAdapter.java   |   20 +
 .../hibernate/query/AbstractHibernateQuery.java    |    8 +-
 .../grails/gorm/tests/DeleteAllWhereSpec.groovy    |   57 -
 .../grails/gorm/tests/WhereQueryBugFixSpec.groovy  |  106 --
 .../WhereQueryOldIssueVerificationSpec.groovy      |  371 ------
 .../core/GrailsDataHibernate5TckManager.groovy     |    1 -
 .../tck/base/GrailsDataTckManagerSpec.groovy       |   70 ++
 grails-data-hibernate5/dbmigration/build.gradle    |   37 +-
 ...plicationContextDatabaseMigrationCommand.groovy |    4 +-
 .../cli}/DatabaseMigrationCommand.groovy           |    2 +-
 .../cli}/DbmChangelogSyncCommand.groovy            |    4 +-
 .../cli}/DbmChangelogSyncSqlCommand.groovy         |    4 +-
 .../dbmigration/cli}/DbmChangelogToGroovy.groovy   |    2 +-
 .../cli}/DbmClearChecksumsCommand.groovy           |    4 +-
 .../dbmigration/cli}/DbmCreateChangelog.groovy     |    2 +-
 .../dbmigration/cli}/DbmDbDocCommand.groovy        |    4 +-
 .../dbmigration/cli}/DbmDiffCommand.groovy         |    4 +-
 .../dbmigration/cli}/DbmDropAllCommand.groovy      |    4 +-
 .../cli}/DbmFutureRollbackCountSqlCommand.groovy   |    4 +-
 .../cli}/DbmFutureRollbackSqlCommand.groovy        |    4 +-
 .../cli}/DbmGenerateChangelogCommand.groovy        |    4 +-
 .../cli}/DbmGenerateGormChangelogCommand.groovy    |    4 +-
 .../dbmigration/cli}/DbmGormDiffCommand.groovy     |    4 +-
 .../dbmigration/cli}/DbmListLocksCommand.groovy    |    4 +-
 .../cli}/DbmMarkNextChangesetRanCommand.groovy     |    4 +-
 .../cli}/DbmMarkNextChangesetRanSqlCommand.groovy  |    4 +-
 .../cli}/DbmPreviousChangesetSqlCommand.groovy     |    4 +-
 .../dbmigration/cli}/DbmReleaseLocksCommand.groovy |    4 +-
 .../dbmigration/cli}/DbmRollbackCommand.groovy     |    4 +-
 .../cli}/DbmRollbackCountCommand.groovy            |    4 +-
 .../cli}/DbmRollbackCountSqlCommand.groovy         |    4 +-
 .../dbmigration/cli}/DbmRollbackSqlCommand.groovy  |    4 +-
 .../cli}/DbmRollbackToDateCommand.groovy           |    4 +-
 .../cli}/DbmRollbackToDateSqlCommand.groovy        |    4 +-
 .../dbmigration/cli}/DbmStatusCommand.groovy       |    4 +-
 .../dbmigration/cli}/DbmTagCommand.groovy          |    4 +-
 .../dbmigration/cli}/DbmUpdateCommand.groovy       |    4 +-
 .../dbmigration/cli}/DbmUpdateCountCommand.groovy  |    4 +-
 .../cli}/DbmUpdateCountSqlCommand.groovy           |    4 +-
 .../dbmigration/cli}/DbmUpdateSqlCommand.groovy    |    4 +-
 .../dbmigration/cli}/DbmValidateCommand.groovy     |    4 +-
 .../cli}/ScriptDatabaseMigrationCommand.groovy     |    2 +-
 .../commands}/dbm-changelog-to-groovy.groovy       |    2 +-
 .../META-INF/commands}/dbm-create-changelog.groovy |    2 +-
 .../databasemigration/DbUpdateCommandSpec.groovy   |    6 +-
 .../DatabaseMigrationGrailsPlugin.groovy           |   17 +-
 ...ationContextDatabaseMigrationCommandSpec.groovy |    6 +-
 .../cli}/DatabaseMigrationCommandConfigSpec.groovy |    2 +-
 .../cli}/DatabaseMigrationCommandSpec.groovy       |    2 +-
 .../cli}/DbmChangelogSyncCommandSpec.groovy        |    4 +-
 .../cli}/DbmChangelogSyncCommandSqlSpec.groovy     |    4 +-
 .../cli}/DbmClearChecksumsCommandSpec.groovy       |    4 +-
 .../dbmigration/cli}/DbmDiffCommandSpec.groovy     |    4 +-
 .../dbmigration/cli}/DbmDropAllCommandSpec.groovy  |    4 +-
 .../DbmFutureRollbackCountSqlCommandSpec.groovy    |    4 +-
 .../cli}/DbmFutureRollbackSqlCommandSpec.groovy    |    4 +-
 .../cli}/DbmGenerateChangelogCommandSpec.groovy    |    4 +-
 .../DbmGenerateGormChangelogCommandSpec.groovy     |    4 +-
 .../dbmigration/cli}/DbmGormDiffCommandSpec.groovy |    4 +-
 .../cli}/DbmListLocksCommandSpec.groovy            |    4 +-
 .../cli}/DbmMarkNextChangesetRanCommandSpec.groovy |    4 +-
 .../DbmMarkNextChangesetRanSqlCommandSpec.groovy   |    4 +-
 .../cli}/DbmPreviousChangesetSqlCommandSpec.groovy |    4 +-
 .../cli}/DbmReleaseLocksCommandSpec.groovy         |    4 +-
 .../dbmigration/cli}/DbmRollbackCommandSpec.groovy |    4 +-
 .../cli}/DbmRollbackCountCommandSpec.groovy        |    4 +-
 .../cli}/DbmRollbackCountSqlCommandSpec.groovy     |    4 +-
 .../cli}/DbmRollbackSqlCommandSpec.groovy          |    4 +-
 .../cli}/DbmRollbackToDateCommandSpec.groovy       |    4 +-
 .../cli}/DbmRollbackToDateSqlCommandSpec.groovy    |    4 +-
 .../dbmigration/cli}/DbmStatusCommandSpec.groovy   |    4 +-
 .../dbmigration/cli}/DbmUpdateCommandSpec.groovy   |    4 +-
 .../cli}/DbmUpdateCountCommandSpec.groovy          |    4 +-
 .../cli}/DbmUpdateCountSqlCommandSpec.groovy       |    4 +-
 .../cli}/DbmUpdateSqlCommandSpec.groovy            |    4 +-
 .../dbmigration/cli}/DbmValidateCommandSpec.groovy |    4 +-
 .../cli}/ScriptDatabaseMigrationCommandSpec.groovy |    2 +-
 .../DatabaseMigrationGrailsPluginSpec.groovy       |   48 +-
 .../liquibase/GroovyChangeLogSpec.groovy           |   12 +-
 .../liquibase/GroovyPreconditionSpec.groovy        |    4 +-
 .../eventsAutoTimestamping.adoc                    |   18 +
 grails-data-hibernate5/grails-plugin/build.gradle  |   18 +-
 .../hibernate5/cli}/SchemaExportCommand.groovy     |    6 +-
 .../groovy/grails/orm/CriteriaMethodInvoker.java   |   31 +-
 .../grails/gorm/tests/DeleteAllWhereSpec.groovy    |   57 -
 .../grails/gorm/tests/WhereQueryBugFixSpec.groovy  |  106 --
 .../WhereQueryOldIssueVerificationSpec.groovy      |  371 ------
 .../core/GrailsDataHibernate7TckManager.groovy     |    1 -
 grails-data-hibernate7/dbmigration/build.gradle    |   24 +-
 ...plicationContextDatabaseMigrationCommand.groovy |    4 +-
 .../cli}/DatabaseMigrationCommand.groovy           |    2 +-
 .../cli}/DbmChangelogSyncCommand.groovy            |    4 +-
 .../cli}/DbmChangelogSyncSqlCommand.groovy         |    4 +-
 .../dbmigration/cli}/DbmChangelogToGroovy.groovy   |    2 +-
 .../cli}/DbmClearChecksumsCommand.groovy           |    4 +-
 .../dbmigration/cli}/DbmCreateChangelog.groovy     |    2 +-
 .../dbmigration/cli}/DbmDbDocCommand.groovy        |    4 +-
 .../dbmigration/cli}/DbmDiffCommand.groovy         |    4 +-
 .../dbmigration/cli}/DbmDropAllCommand.groovy      |    4 +-
 .../cli}/DbmFutureRollbackCountSqlCommand.groovy   |    4 +-
 .../cli}/DbmFutureRollbackSqlCommand.groovy        |    4 +-
 .../cli}/DbmGenerateChangelogCommand.groovy        |    4 +-
 .../cli}/DbmGenerateGormChangelogCommand.groovy    |    4 +-
 .../dbmigration/cli}/DbmGormDiffCommand.groovy     |    4 +-
 .../dbmigration/cli}/DbmListLocksCommand.groovy    |    4 +-
 .../cli}/DbmMarkNextChangesetRanCommand.groovy     |    4 +-
 .../cli}/DbmMarkNextChangesetRanSqlCommand.groovy  |    4 +-
 .../cli}/DbmPreviousChangesetSqlCommand.groovy     |    4 +-
 .../dbmigration/cli}/DbmReleaseLocksCommand.groovy |    4 +-
 .../dbmigration/cli}/DbmRollbackCommand.groovy     |    4 +-
 .../cli}/DbmRollbackCountCommand.groovy            |    4 +-
 .../cli}/DbmRollbackCountSqlCommand.groovy         |    4 +-
 .../dbmigration/cli}/DbmRollbackSqlCommand.groovy  |    4 +-
 .../cli}/DbmRollbackToDateCommand.groovy           |    4 +-
 .../cli}/DbmRollbackToDateSqlCommand.groovy        |    4 +-
 .../dbmigration/cli}/DbmStatusCommand.groovy       |    4 +-
 .../dbmigration/cli}/DbmTagCommand.groovy          |    4 +-
 .../dbmigration/cli}/DbmUpdateCommand.groovy       |    4 +-
 .../dbmigration/cli}/DbmUpdateCountCommand.groovy  |    4 +-
 .../cli}/DbmUpdateCountSqlCommand.groovy           |    4 +-
 .../dbmigration/cli}/DbmUpdateSqlCommand.groovy    |    4 +-
 .../dbmigration/cli}/DbmValidateCommand.groovy     |    4 +-
 .../cli}/ScriptDatabaseMigrationCommand.groovy     |    2 +-
 .../commands}/dbm-changelog-to-groovy.groovy       |    2 +-
 .../META-INF/commands}/dbm-create-changelog.groovy |    2 +-
 .../databasemigration/DbUpdateCommandSpec.groovy   |    6 +-
 .../DatabaseMigrationGrailsPlugin.groovy           |   17 +-
 ...ationContextDatabaseMigrationCommandSpec.groovy |    6 +-
 .../cli}/DatabaseMigrationCommandConfigSpec.groovy |    2 +-
 .../cli}/DatabaseMigrationCommandSpec.groovy       |    2 +-
 .../cli}/DbmChangelogSyncCommandSpec.groovy        |    4 +-
 .../cli}/DbmChangelogSyncCommandSqlSpec.groovy     |    4 +-
 .../cli}/DbmClearChecksumsCommandSpec.groovy       |    4 +-
 .../dbmigration/cli}/DbmDiffCommandSpec.groovy     |    4 +-
 .../dbmigration/cli}/DbmDropAllCommandSpec.groovy  |    4 +-
 .../DbmFutureRollbackCountSqlCommandSpec.groovy    |    4 +-
 .../cli}/DbmFutureRollbackSqlCommandSpec.groovy    |    4 +-
 .../cli}/DbmGenerateChangelogCommandSpec.groovy    |    4 +-
 .../DbmGenerateGormChangelogCommandSpec.groovy     |    4 +-
 .../dbmigration/cli}/DbmGormDiffCommandSpec.groovy |    4 +-
 .../cli}/DbmListLocksCommandSpec.groovy            |    4 +-
 .../cli}/DbmMarkNextChangesetRanCommandSpec.groovy |    4 +-
 .../DbmMarkNextChangesetRanSqlCommandSpec.groovy   |    4 +-
 .../cli}/DbmPreviousChangesetSqlCommandSpec.groovy |    4 +-
 .../cli}/DbmReleaseLocksCommandSpec.groovy         |    4 +-
 .../dbmigration/cli}/DbmRollbackCommandSpec.groovy |    4 +-
 .../cli}/DbmRollbackCountCommandSpec.groovy        |    4 +-
 .../cli}/DbmRollbackCountSqlCommandSpec.groovy     |    4 +-
 .../cli}/DbmRollbackSqlCommandSpec.groovy          |    4 +-
 .../cli}/DbmRollbackToDateCommandSpec.groovy       |    4 +-
 .../cli}/DbmRollbackToDateSqlCommandSpec.groovy    |    4 +-
 .../dbmigration/cli}/DbmStatusCommandSpec.groovy   |    4 +-
 .../dbmigration/cli}/DbmUpdateCommandSpec.groovy   |    4 +-
 .../cli}/DbmUpdateCountCommandSpec.groovy          |    4 +-
 .../cli}/DbmUpdateCountSqlCommandSpec.groovy       |    4 +-
 .../cli}/DbmUpdateSqlCommandSpec.groovy            |    4 +-
 .../dbmigration/cli}/DbmValidateCommandSpec.groovy |    4 +-
 .../cli}/ScriptDatabaseMigrationCommandSpec.groovy |    2 +-
 .../DatabaseMigrationGrailsPluginSpec.groovy       |   48 +-
 .../liquibase/GroovyChangeLogSpec.groovy           |   12 +-
 .../liquibase/GroovyPreconditionSpec.groovy        |    4 +-
 .../eventsAutoTimestamping.adoc                    |   18 +
 grails-data-hibernate7/grails-plugin/build.gradle  |   18 +
 .../hibernate7/cli}/SchemaExportCommand.groovy     |    7 +-
 grails-data-mongodb/core/build.gradle              |    4 +
 .../datastore/mapping/mongo/query/MongoQuery.java  |   40 +-
 .../gorm/mongo/EmbeddedAssociationSpec.groovy      |   18 +
 .../gorm/mongo/api/MongoStaticApiSpec.groovy       |   55 +
 .../datastore/gorm/neo4j/Neo4jDatastore.java       |   47 +-
 .../grails/datastore/gorm/neo4j/Neo4jSession.java  |   41 +
 .../engine/Neo4jAssociationQueryExecutor.groovy    |    5 +-
 .../gorm/neo4j/engine/Neo4jEntityPersister.java    |   37 +
 .../datastore/gorm/neo4j/engine/Neo4jQuery.groovy  |   70 +-
 grails-data-neo4j/grails-plugin/build.gradle       |    6 +
 .../Neo4jDataStoreSpringInitializer.groovy         |   26 +
 grails-data-simple/build.gradle                    |    2 +
 .../mapping/simple/query/SimpleMapQuery.groovy     |    9 +-
 .../mapping/simple/SimpleMapDatastoreSpec.groovy   |   66 +
 grails-datamapping-core-test/build.gradle          |   10 +
 .../main/groovy/grails/gorm/CriteriaBuilder.java   |    4 +
 .../org/grails/datastore/gorm/GormStaticApi.groovy |    3 +-
 .../gorm/events/AutoTimestampEventListener.java    |  239 +++-
 .../grails/datastore/gorm/jdbc/RelaxedNames.java   |    4 +-
 .../query/criteria/AbstractDetachedCriteria.groovy |   10 +-
 .../transform/DetachedCriteriaTransformer.java     |   28 +-
 .../groovy/grails/gorm/CriteriaBuilderSpec.groovy  |  133 ++
 .../transactions/TransactionalTransformSpec.groovy |   32 +
 .../multitenancy/CurrentTenantHolderSpec.groovy    |  205 +++
 .../grails/gorm/multitenancy/TenantsSpec.groovy    |  558 +++++++++
 .../AbstractServiceImplementerCoverageSpec.groovy  |   57 +
 ...stractStringQueryImplementerCoverageSpec.groovy |  125 ++
 .../FindAllByImplementerCoverageSpec.groovy        |   84 ++
 .../ServiceTransformationCoverageSpec.groovy       |  101 ++
 .../GrailsTransactionTemplateSpec.groovy           |   75 ++
 .../datastore/gorm/AbstractDatastoreApiSpec.groovy |  115 ++
 .../datastore/gorm/AbstractGormApiSpec.groovy      |  175 +++
 .../gorm/ConnectionSourceNameResolverSpec.groovy   |   54 +
 .../datastore/gorm/GormApiResolverSpec.groovy      |  967 +++++++++++++++
 .../datastore/gorm/GormEnhancerCoverageSpec.groovy |  188 +++
 .../gorm/GormInstanceApiRegistrySpec.groovy        |   95 ++
 .../datastore/gorm/GormInstanceApiSpec.groovy      |  410 ++++++
 .../datastore/gorm/GormRegistryCoverageSpec.groovy |  437 +++++++
 .../gorm/GormStaticApiRegistrySpec.groovy          |   95 ++
 .../grails/datastore/gorm/GormStaticApiSpec.groovy |  705 +++++++++++
 .../gorm/GormValidationApiCoverageSpec.groovy      |  376 ++++++
 .../gorm/GormValidationApiRegistrySpec.groovy      |   94 ++
 .../gorm/finders/AbstractFinderSpec.groovy         |  100 ++
 .../gorm/finders/DynamicFinderCoverageSpec.groovy  |  235 ++++
 .../gorm/finders/FindOrSaveByFinderSpec.groovy     |   88 ++
 .../MultiTenantEventListenerSpec.groovy            |  321 +++++
 .../TenantDelegatingGormOperationsSpec.groovy      |  117 ++
 .../transform/WhereQueryClosureCaptureSpec.groovy  |  105 ++
 .../WhereQueryEmbeddedBlockTransformSpec.groovy    |  117 ++
 .../gorm/services/DefaultTenantServiceSpec.groovy  |  214 ++++
 .../services/DefaultTransactionServiceSpec.groovy  |   45 +
 .../AutoTimestampEventListenerSpec.groovy          |  735 ++++++++---
 .../DefaultTransactionTemplateFactorySpec.groovy   |   63 +
 .../MappingContextTraversableResolverSpec.groovy   |   28 +
 .../data/testing/tck/domains/ExternalRef.groovy    |   26 +
 .../data/testing/tck/domains/SystemManaged.groovy  |   29 +
 .../data/testing/tck/domains/WorkItem.groovy       |   30 +
 .../data/testing/tck/domains/WorkItemGroup.groovy  |   29 +
 .../data/testing/tck/domains/WqAuthor.groovy       |   30 +
 .../data/testing/tck/domains/WqBiAuthor.groovy     |   30 +
 .../data/testing/tck/domains/WqBiBook.groovy       |   31 +
 .../data/testing/tck/domains/WqBookAuthor.groovy   |   30 +
 .../data/testing/tck/domains/WqBookItem.groovy     |   30 +
 .../grails/data/testing/tck/domains/WqFoo.groovy   |   32 +
 .../data/testing/tck/domains/WqGroupedItem.groovy  |   34 +
 .../data/testing/tck/domains/WqPhrase.groovy       |   30 +
 .../grails/data/testing/tck/domains/WqRole.groovy  |   28 +
 .../data/testing/tck/domains/WqRoleUser.groovy     |   30 +
 .../testing/tck/domains/WqScientificBook.groovy    |   31 +
 .../data/testing/tck/domains/WqSentence.groovy     |   28 +
 .../data/testing/tck/domains/WqStudent.groovy      |   40 +
 .../grails/data/testing/tck/domains/WqThing.groovy |   28 +
 .../data/testing/tck/domains/WqUserRole.groovy     |   36 +
 .../grails/data/testing/tck/domains/WqWord.groovy  |   30 +
 .../data/testing/tck/tests/DeleteAllSpec.groovy    |   21 +
 .../tck/tests/WhereQueryEmbeddedSpec.groovy        |  348 ++++++
 .../tests/WhereQueryIssueVerificationSpec.groovy   |  258 ++++
 .../tck/tests/WhereQueryLeftJoinSpec.groovy        |   89 ++
 .../DataSourceBeanDefinitionsPostProcessor.groovy  |   83 ++
 .../datasource/DataSourceGrailsPlugin.groovy       |   69 +-
 .../datasource/DataSourceGrailsPluginSpec.groovy   |   92 +-
 .../datastore/mapping/core/AbstractDatastore.java  |   12 +-
 .../mapping/core/ThreadLocalSessionResolver.groovy |   18 +-
 .../mapping/core/AbstractDatastoreSpec.groovy      |    6 +-
 .../core/ThreadLocalSessionResolverSpec.groovy     |   20 +-
 .../AbstractPersistentEntityGetTenantIdSpec.groovy |   50 +
 grails-doc/src/en/guide/commandLine.adoc           |    4 +-
 .../guide/commandLine/creatingCustomCommands.adoc  |  178 ++-
 .../src/en/guide/commandLine/creatingProject.adoc  |   28 +-
 .../gradleBuild/gradleDependencies.adoc            |    1 -
 .../commandLine/gradleBuild/gradlePlugins.adoc     |    4 +-
 .../src/en/guide/commandLine/interactiveMode.adoc  |   19 +-
 .../src/en/guide/conf/config/builtInOptions.adoc   |    1 +
 ...maskingRequestParametersFromStacktraceLogs.adoc |    1 +
 grails-doc/src/en/guide/i18n/changingLocales.adoc  |   26 +
 grails-doc/src/en/guide/index.adoc                 |    6 -
 grails-doc/src/en/guide/introduction/whatsNew.adoc |   77 +-
 grails-doc/src/en/guide/links.yml                  |    9 +-
 .../plugins/creatingAndInstallingPlugins.adoc      |    4 +-
 .../en/guide/plugins/providingBasicArtefacts.adoc  |   46 +-
 .../src/en/guide/security/authentication.adoc      |    2 +-
 .../src/en/guide/testing/functionalTesting.adoc    |   73 ++
 .../fields/customizingFieldRendering.adoc          |    2 +-
 .../src/en/guide/theWebLayer/gson/gsonHal.adoc     |    2 +-
 .../src/en/guide/upgrading/upgrading72x.adoc       |    2 +-
 .../src/en/guide/upgrading/upgrading80x.adoc       |  264 +++-
 grails-doc/src/en/ref/Command Line/create-app.adoc |   12 +-
 .../src/en/ref/Command Line/create-command.adoc    |   19 +-
 .../src/en/ref/Command Line/create-plugin.adoc     |   12 +-
 .../src/en/ref/Command Line/create-restapi.adoc    |    4 +-
 .../src/en/ref/Command Line/create-web-plugin.adoc |    4 +-
 grails-doc/src/en/ref/Command Line/help.adoc       |   12 +-
 .../src/en/ref/Command Line/list-features.adoc     |    7 +-
 grails-doc/src/en/ref/Command Line/run-app.adoc    |    3 +
 grails-doc/src/en/ref/Tags - GSP/localeSelect.adoc |   33 +-
 .../plugins/domain/DomainClassGrailsPlugin.groovy  |   18 +-
 .../domain/DomainClassGrailsPluginSpec.groovy      |   65 +
 grails-events/plugin/build.gradle                  |    1 +
 .../plugins/events/EventBusGrailsPlugin.groovy     |   32 +-
 .../plugins/events/EventBusGrailsPluginSpec.groovy |   81 ++
 .../plugin/formfields/FieldsGrailsPlugin.groovy    |   43 +-
 .../formfields/FieldsGrailsPluginSpec.groovy       |   75 ++
 grails-forge/gradle.properties                     |    2 +
 .../gradle/groovy-version-pin.gradle               |   22 +-
 grails-forge/grails-cli/build.gradle               |    7 +
 .../grails-forge-analytics-postgres/build.gradle   |    1 +
 .../postgres/StoreGeneratedProjectStatsSpec.groovy |    2 +-
 grails-forge/grails-forge-api/build.gradle         |    1 +
 .../main/java/org/grails/forge/api/FeatureDTO.java |   26 +
 .../java/org/grails/forge/api/GormImplDTO.java     |    6 +-
 .../org/grails/forge/api/SelectOptionsDTO.java     |    2 +-
 .../java/org/grails/forge/api/ServletImplDTO.java  |    2 +-
 .../grails/forge/api/FeatureControllerSpec.groovy  |   28 +-
 .../forge/api/ZipCreateControllerSpec.groovy       |   31 +
 .../github/GitHubCreateControllerSpec.groovy       |    2 -
 grails-forge/grails-forge-cli/build.gradle         |    1 +
 .../grails/forge/cli/command/CreateCommand.java    |    2 +-
 .../forge/cli/command/GormImplConverter.java       |   12 +-
 .../forge/cli/command/CreateAppCommandSpec.groovy  |   84 +-
 .../command/CreateDomainClassCommandSpec.groovy    |    2 +-
 grails-forge/grails-forge-core/build.gradle        |    1 +
 .../java/org/grails/forge/analytics/Generated.java |    2 +-
 .../grails/forge/application/ContextFactory.java   |   25 +-
 .../forge/build/gradle/GradleRepository.java       |   78 +-
 .../forge/build/gradle/MavenLocalRepository.java   |   23 +-
 .../java/org/grails/forge/feature/Category.java    |    1 +
 .../java/org/grails/forge/feature/Feature.java     |   15 +
 .../templates/buildSrcBuildGradle.rocker.raw       |    8 +
 .../DatabaseDriverConfigurationFeature.java        |    5 +-
 .../feature/database/DatabaseDriverFeature.java    |   12 +-
 ...ibernateGorm.java => GrailsDataHibernate5.java} |   23 +-
 ...ibernateGorm.java => GrailsDataHibernate7.java} |   29 +-
 .../GrailsDataHibernateValidator.java}             |   47 +-
 .../{MongoGorm.java => GrailsDataMongoDB.java}     |   10 +-
 .../grails/forge/feature/database/GraphqlGorm.java |   16 +-
 .../java/org/grails/forge/feature/database/H2.java |    3 +-
 .../org/grails/forge/feature/database/MySQL.java   |    4 +-
 .../grails/forge/feature/database/PostgreSQL.java  |    4 +-
 .../grails/forge/feature/database/SQLServer.java   |    4 +-
 .../forge/feature/database/TestContainers.java     |    2 +-
 .../grails/forge/feature/grails/GrailsBase.java    |   17 +-
 .../forge/feature/grails/GrailsDefaultPlugins.java |    1 +
 .../feature/lang/groovy/GrailsApplication.java     |    2 +-
 .../feature/lang/groovy/application.rocker.raw     |    7 +
 .../forge/feature/lang/groovy/bootStrap.rocker.raw |   27 +-
 .../feature/logging/template/logback.rocker.raw    |   32 +-
 .../feature/migration/DatabaseMigrationPlugin.java |   18 +-
 .../feature/security/GrailsSpringSecurity.java     |   91 ++
 .../feature/security/GrailsSpringSecurityUi.java   |   98 ++
 .../feature/security/PrimarySecurityFeature.java   |   30 +-
 .../forge/feature/security/SecurityFeature.java    |   87 ++
 .../security/SpringBootStarterSecurity.java        |   90 ++
 .../template/role.rocker.raw}                      |   25 +-
 .../template/securityApplicationGroovy.rocker.raw  |   52 +
 .../security/template/securityConfig.rocker.raw    |   51 +
 .../template/user.rocker.raw}                      |   30 +-
 .../security/template/userClassic.rocker.raw       |   64 +
 .../template/userClassicService.rocker.raw}        |   14 +-
 .../template/userClassicSpec.rocker.raw}           |   26 +-
 .../template/userController.rocker.raw}            |   15 +-
 .../feature/security/template/userRole.rocker.raw  |  116 ++
 .../template/userService.rocker.raw}               |   20 +-
 .../template/userSpec.rocker.raw}                  |   19 +-
 .../feature/spring/SpringBootUndertowFeature.java  |   22 +-
 .../java/org/grails/forge/options/GormImpl.java    |   33 +-
 .../forge/options/GormImplTypeConverter.java       |   47 +
 .../java/org/grails/forge/options/ServletImpl.java |    2 +-
 .../resources/assets/javascripts/application.js    |   53 +-
 .../main/resources/assets/javascripts/welcome.js   |  164 ++-
 .../main/resources/assets/stylesheets/welcome.css  |  145 +++
 .../src/main/resources/gsp/index.gsp               | 1299 ++++++++++++++++++--
 .../src/main/resources/gsp/main.gsp                |  170 ++-
 .../src/main/resources/i18n/messages.properties    |   97 ++
 .../src/main/resources/i18n/messages_cs.properties |   98 ++
 .../src/main/resources/i18n/messages_da.properties |   98 ++
 .../src/main/resources/i18n/messages_de.properties |   98 ++
 .../src/main/resources/i18n/messages_es.properties |   99 +-
 .../src/main/resources/i18n/messages_fr.properties |  146 ++-
 .../src/main/resources/i18n/messages_it.properties |  102 +-
 .../src/main/resources/i18n/messages_ja.properties |   98 ++
 .../src/main/resources/i18n/messages_nb.properties |   98 ++
 .../src/main/resources/i18n/messages_nl.properties |   98 ++
 .../src/main/resources/i18n/messages_pl.properties |  114 +-
 .../main/resources/i18n/messages_pt_BR.properties  |  102 +-
 .../main/resources/i18n/messages_pt_PT.properties  |  128 +-
 .../src/main/resources/i18n/messages_ru.properties |  126 +-
 .../src/main/resources/i18n/messages_sk.properties |   97 ++
 .../src/main/resources/i18n/messages_sv.properties |   99 +-
 .../src/main/resources/i18n/messages_th.properties |  116 +-
 .../main/resources/i18n/messages_zh_CN.properties  |  134 ++
 .../main/resources/i18n/messages_zh_TW.properties  |  153 +++
 .../forge/build/gradle/GradleRepositorySpec.groovy |  102 ++
 ...Spec.groovy => GrailsDataHibernate5Spec.groovy} |    2 +-
 .../database/GrailsDataHibernate7Spec.groovy       |  220 ++++
 ...ormSpec.groovy => GrailsDataMongoDBSpec.groovy} |   38 +-
 .../feature/grails/GrailsDefaultPluginsSpec.groovy |   73 +-
 .../forge/feature/logging/LogbackSpec.groovy       |   17 +-
 .../migration/DatabaseMigrationPluginSpec.groovy   |   13 +-
 .../security/GrailsSpringSecuritySpec.groovy       |  114 ++
 .../security/GrailsSpringSecurityUiSpec.groovy     |  107 ++
 .../security/SpringBootStarterSecuritySpec.groovy  |  112 ++
 .../forge/feature/spring/SpringBootSpec.groovy     |   23 +-
 .../grails/forge/feature/view/GrailsGspSpec.groovy |  324 +++++
 .../org/grails/forge/options/GormImplSpec.groovy}  |   42 +-
 grails-forge/grails-forge-web-netty/build.gradle   |    1 +
 grails-forge/test-core/build.gradle                |    1 +
 .../org/grails/forge/create/CreateAppSpec.groovy   |    2 +-
 .../io/support/FactoriesLoaderSupport.groovy       |   23 +-
 .../org/grails/io/support/SpringIOUtils.java       |    4 +-
 grails-gradle/plugins/build.gradle                 |   18 +
 .../plugin/commands/CliArtifactExtension.groovy    |   53 +
 .../plugin/commands/CliPublishingSupport.groovy    |  166 +++
 .../commands/GrailsCliArtifactGradlePlugin.groovy  |  229 ++++
 .../plugin/commands/GrailsCliGradlePlugin.groovy   |  490 ++++++++
 .../commands/GrailsCliLibraryGradlePlugin.groovy   |   50 +
 .../gradle/plugin/core/GrailsExtension.groovy      |   18 +-
 .../gradle/plugin/core/GrailsGradlePlugin.groovy   |  239 +---
 .../profiles/GrailsProfileGradlePlugin.groovy      |    6 +-
 .../profiles/tasks/ProfileCompilerTask.groovy      |    4 +-
 .../gradle/plugin/util/ClasspathUtils.groovy       |   60 +
 .../gradle/plugin/web/GrailsWebGradlePlugin.groovy |    6 +-
 .../plugin/commands/CliAutoDiscoverySpec.groovy    |   95 ++
 .../commands/CliCompanionPublishingSpec.groovy     |   93 ++
 .../BomCliMultiprojectRaceFunctionalSpec.groovy    |   65 +
 .../plugin/core/BomOptOutFunctionalSpec.groovy     |   17 +-
 .../profiles/tasks/ProfileCompilerTaskSpec.groovy  |   75 ++
 .../auto-apply-bom-disabled/build.gradle           |    8 +-
 .../consumer/build.gradle                          |   16 +
 .../grails/race-bom/1.0-race/race-bom-1.0-race.pom |   24 +
 .../producer/build.gradle                          |   27 +
 .../bom-cli-multiproject-race/settings.gradle      |    4 +
 .../cli-companion-autodiscovery/app/build.gradle   |   57 +
 .../cli-companion-autodiscovery/gradle.properties  |    2 +
 .../my-plugin/build.gradle                         |   12 +
 .../cli/java/com/example/HelloWorldCommand.java    |    6 +
 .../cli/resources/META-INF/grails-cli.factories    |    1 +
 .../renamed-plugin/build.gradle                    |   13 +
 .../src/cli/java/com/acme/AcmeCommand.java         |    5 +
 .../cli-companion-autodiscovery/settings.gradle    |    3 +
 .../console-lib/build.gradle                       |   28 +
 .../custom-owner/build.gradle                      |   30 +
 .../cli-companion-publishing/gradle.properties     |    1 +
 .../cli-companion-publishing/owner/build.gradle    |   27 +
 .../cli-companion-publishing/plugin-a/build.gradle |   32 +
 .../cli-companion-publishing/plugin-b/build.gradle |   34 +
 .../cli-companion-publishing/resolver/build.gradle |   27 +
 .../cli-companion-publishing/settings.gradle       |    3 +
 .../gsp/compiler/GrailsLayoutPreprocessor.java     |   14 +-
 .../grails/web/layout/LayoutGrailsPlugin.groovy    |   44 +-
 .../web/layout/LayoutGrailsPluginSpec.groovy       |   80 ++
 ...lsSiteMeshViewResolverBeanPostProcessor.groovy} |   60 +-
 .../sitemesh3/Sitemesh3AutoConfiguration.groovy    |  131 ++
 .../Sitemesh3EnvironmentPostProcessor.groovy       |  125 ++
 .../plugins/sitemesh3/Sitemesh3GrailsPlugin.groovy |   75 +-
 ...mesh3ViewResolverDefinitionPostProcessor.groovy |  136 ++
 .../sitemesh3/Sitemesh3AutoConfiguration.java      |  105 --
 .../src/main/resources/META-INF/spring.factories   |   19 +
 ...iteMeshViewResolverBeanPostProcessorSpec.groovy |   18 -
 .../Sitemesh3AutoConfigurationSpec.groovy          |    7 +-
 .../Sitemesh3EnvironmentPostProcessorSpec.groovy   |  100 ++
 .../sitemesh3/Sitemesh3LayoutFinderSpec.groovy     |    2 +-
 ...3ViewResolverDefinitionPostProcessorSpec.groovy |  147 +++
 .../grails/plugins/web/taglib/FormTagLib.groovy    |  151 ++-
 .../web/taglib/LocaleSelectAvailableSpec.groovy    |   97 ++
 .../LocaleSelectConfiguredDefaultSpec.groovy       |   51 +
 .../taglib/LocaleSelectPinnedVariantSpec.groovy    |   53 +
 .../web/taglib/LocaleSelectRenderingSpec.groovy    |  204 +++
 .../java/grails/gsp/boot/GspAutoConfiguration.java |    8 +-
 .../plugins/i18n/AvailableLocaleResolver.java      |  193 +++
 .../grails/plugins/i18n/I18nAutoConfiguration.java |   26 +
 .../grails/plugins/i18n/I18nGrailsPlugin.groovy    |   40 +-
 .../i18n/AvailableLocaleResolverSpec.groovy        |  182 +++
 .../plugins/i18n/I18nAutoConfigurationSpec.groovy  |   41 +
 .../plugins/i18n/I18nGrailsPluginSpec.groovy       |  139 +++
 .../src/test/resources/bogus-plugin_zz.properties  |    1 +
 grails-i18n/src/test/resources/messages.properties |    1 +
 .../src/test/resources/messages_.properties        |    1 +
 .../src/test/resources/messages_cs.properties      |    1 +
 .../src/test/resources/messages_es.properties      |    1 +
 .../src/test/resources/messages_fr.properties      |    1 +
 .../src/test/resources/messages_pt_BR.properties   |    1 +
 .../src/test/resources/report_en_prod.properties   |    1 +
 .../resources/spring-security-core_zu.properties   |    1 +
 .../src/test/resources/standalone.properties       |    1 +
 .../InterceptorBeanDefinitionsPostProcessor.groovy |  104 ++
 .../interceptors/InterceptorsGrailsPlugin.groovy   |   30 +-
 .../InterceptorsGrailsPluginSpec.groovy            |  136 ++
 grails-profiles/base/profile.yml                   |    2 -
 .../skeleton/grails-app/conf/logback-spring.xml    |   30 +-
 .../skeleton/grails-app/i18n/messages.properties   |   97 ++
 .../grails-app/i18n/messages_cs.properties         |   98 ++
 .../grails-app/i18n/messages_da.properties         |   98 ++
 .../grails-app/i18n/messages_de.properties         |   98 ++
 .../grails-app/i18n/messages_es.properties         |   99 +-
 .../grails-app/i18n/messages_fr.properties         |  146 ++-
 .../grails-app/i18n/messages_it.properties         |  102 +-
 .../grails-app/i18n/messages_ja.properties         |   98 ++
 .../grails-app/i18n/messages_nb.properties         |   98 ++
 .../grails-app/i18n/messages_nl.properties         |   98 ++
 .../grails-app/i18n/messages_pl.properties         |  114 +-
 .../grails-app/i18n/messages_pt_BR.properties      |  102 +-
 .../grails-app/i18n/messages_pt_PT.properties      |  128 +-
 .../grails-app/i18n/messages_ru.properties         |  126 +-
 .../grails-app/i18n/messages_sk.properties         |   97 ++
 .../grails-app/i18n/messages_sv.properties         |   99 +-
 .../grails-app/i18n/messages_th.properties         |  116 +-
 .../grails-app/i18n/messages_zh_CN.properties      |  134 ++
 .../grails-app/i18n/messages_zh_TW.properties      |  153 +++
 .../base/templates/artifacts/Command.groovy        |    2 +-
 ...ls.codegen.projectClassName@GrailsPlugin.groovy |   11 +-
 ...ls.codegen.projectClassName@GrailsPlugin.groovy |   11 +-
 .../grails-app/assets/javascripts/application.js   |   53 +-
 .../grails-app/assets/javascripts/welcome.js       |  163 ++-
 .../grails-app/assets/stylesheets/welcome.css      |  145 +++
 .../web/skeleton/grails-app/views/index.gsp        | 1299 ++++++++++++++++++--
 .../web/skeleton/grails-app/views/layouts/main.gsp |  170 ++-
 grails-redis/build.gradle                          |    6 +
 .../redis/RedisBeanDefinitionsPostProcessor.groovy |   66 +
 .../redis/util/RedisConfigurationUtil.groovy       |  120 +-
 .../src/main/groovy/redis/RedisGrailsPlugin.groovy |   30 +-
 .../RedisBeanDefinitionsPostProcessorSpec.groovy   |  107 ++
 .../render/errors/AbstractVndErrorRenderer.groovy  |    2 +
 .../render/util/AbstractLinkingRenderer.groovy     |    3 +
 .../rest/plugin/RestResponderGrailsPlugin.groovy   |   22 +-
 .../web/rest/render/DefaultRendererRegistry.groovy |   35 +-
 .../rest/render/html/DefaultHtmlRenderer.groovy    |   12 +-
 .../rest/render/json/DefaultJsonRenderer.groovy    |    4 +
 .../web/rest/render/xml/DefaultXmlRenderer.groovy  |    4 +
 .../plugin/RestResponderGrailsPluginSpec.groovy    |   65 +
 .../rest/render/DefaultRendererRegistrySpec.groovy |   38 +
 .../web/rest/render/html/HtmlRendererSpec.groovy   |   35 +
 grails-scaffolding/build.gradle                    |   23 +
 .../scaffolding/cli}/CommandLineHelper.groovy      |    4 +-
 .../cli}/CreateScaffoldControllerCommand.groovy    |    6 +-
 .../cli}/CreateScaffoldServiceCommand.groovy       |    6 +-
 .../scaffolding/cli}/GenerateAllCommand.groovy     |    6 +-
 .../cli}/GenerateAsyncControllerCommand.groovy     |    6 +-
 .../cli}/GenerateControllerCommand.groovy          |    6 +-
 .../cli}/GenerateScaffoldAllCommand.groovy         |    6 +-
 .../scaffolding/cli}/GenerateServiceCommand.groovy |    6 +-
 .../scaffolding/cli}/GenerateViewsCommand.groovy   |    6 +-
 .../cli}/InstallTemplatesCommand.groovy            |    6 +-
 .../grails/scaffolding/cli}/SkipBootstrap.groovy   |    2 +-
 .../scaffolding/ScaffoldingGrailsPlugin.groovy     |   34 +-
 ...ldingViewResolverDefinitionPostProcessor.groovy |   96 ++
 ...gViewResolverDefinitionPostProcessorSpec.groovy |   90 ++
 grails-services/build.gradle                       |    1 +
 .../ServiceBeanDefinitionsPostProcessor.groovy     |   99 ++
 .../plugins/services/ServicesGrailsPlugin.groovy   |   46 +-
 .../services/ServicesGrailsPluginSpec.groovy       |  140 +++
 .../cli/profile/GrailsRepositoryOverrides.groovy   |  128 ++
 .../grails/cli/profile/ProfileRepoConfig.groovy    |   18 +-
 .../cli/profile/commands/CreateAppCommand.groovy   |   34 +-
 .../ApplicationContextCommandFactory.groovy        |    4 +-
 .../profile/GrailsRepositoryOverridesSpec.groovy   |  123 ++
 .../profile/commands/CreateAppCommandSpec.groovy   |   61 +
 grails-spring-security/oauth2/plugin/build.gradle  |   20 +
 .../plugin/grails-app/i18n/messages.properties     |    3 +-
 .../grails-app/views/springSecurityOAuth2/ask.gsp  |  192 ++-
 .../security/oauth2/cli}/CommandLineHelper.groovy  |    2 +-
 .../security/oauth2/cli}/InitOAuth2Command.groovy  |    5 +-
 grails-spring-security/plugin/build.gradle         |   20 +
 .../plugin/springsecurity/LoginController.groovy   |    2 +-
 .../plugin/springsecurity/LogoutController.groovy  |   11 +
 .../i18n/spring-security-core.properties           |    1 +
 .../i18n/spring-security-core_cs.properties        |   39 +
 .../i18n/spring-security-core_da.properties        |   39 +
 .../i18n/spring-security-core_de.properties        |    6 +-
 .../i18n/spring-security-core_es.properties        |    2 +
 .../i18n/spring-security-core_fr.properties        |    4 +-
 .../i18n/spring-security-core_it.properties        |    2 +
 .../i18n/spring-security-core_ja.properties        |    2 +
 .../i18n/spring-security-core_nb.properties        |    2 +
 .../i18n/spring-security-core_nl.properties        |   39 +
 .../i18n/spring-security-core_pl.properties        |   39 +
 .../i18n/spring-security-core_pt_BR.properties     |    3 +-
 .../i18n/spring-security-core_pt_PT.properties     |   39 +
 .../i18n/spring-security-core_ru.properties        |    2 +
 .../i18n/spring-security-core_sk.properties        |   39 +
 .../i18n/spring-security-core_sv.properties        |    2 +
 .../i18n/spring-security-core_th.properties        |   39 +
 .../i18n/spring-security-core_zh_CN.properties     |   39 +
 .../i18n/spring-security-core_zh_TW.properties     |    1 +
 .../plugin/grails-app/views/login/auth.gsp         |  199 +--
 .../plugin/grails-app/views/login/denied.gsp       |   17 +-
 .../grails/security/cli}/CommandLineHelper.groovy  |    4 +-
 .../cli}/S2CreatePersistentTokenCommand.groovy     |    5 +-
 .../cli}/S2CreateRoleHierarchyEntryCommand.groovy  |    5 +-
 .../security/cli}/S2QuickstartCommand.groovy       |    5 +-
 .../grails/security/cli}/SkipBootstrap.groovy      |    2 +-
 .../springsecurity/LogoutControllerSpec.groovy}    |   19 +-
 grails-spring-security/rest/gorm/build.gradle      |    3 -
 grails-spring-security/rest/memcached/build.gradle |    3 -
 .../rest/testapp-profile/build.gradle              |   31 +-
 grails-spring-security/ui/plugin/build.gradle      |   40 +-
 .../grails-app/assets/images/icons/error.svg       |    5 -
 .../plugin/grails-app/assets/images/icons/info.svg |    5 -
 .../plugin/grails-app/assets/images/icons/role.svg |    6 -
 .../plugin/grails-app/assets/images/icons/user.svg |    4 -
 .../grails-app/assets/images/icons/users.svg       |    6 -
 .../plugin/grails-app/assets/images/sort_asc.png   |  Bin 160 -> 0 bytes
 .../grails-app/assets/images/sort_asc_disabled.png |  Bin 148 -> 0 bytes
 .../plugin/grails-app/assets/images/sort_both.png  |  Bin 201 -> 0 bytes
 .../plugin/grails-app/assets/images/sort_desc.png  |  Bin 158 -> 0 bytes
 .../assets/images/sort_desc_disabled.png           |  Bin 146 -> 0 bytes
 .../assets/javascripts/jquery/jquery.jdMenu.js     |  171 ---
 .../assets/javascripts/jquery/jquery.positionBy.js |  306 -----
 .../javascripts/spring-security-ui-ajaxLogin.js    |   78 +-
 .../javascripts/spring-security-ui-register.js     |   22 -
 .../assets/javascripts/spring-security-ui.js       |   20 +-
 .../assets/stylesheets/elements/btn_left.gif       |  Bin 221 -> 0 bytes
 .../assets/stylesheets/elements/btn_right.gif      |  Bin 108 -> 0 bytes
 .../assets/stylesheets/elements/checkbox.gif       |  Bin 627 -> 0 bytes
 .../assets/stylesheets/elements/input.gif          |  Bin 606 -> 0 bytes
 .../assets/stylesheets/elements/input_left.gif     |  Bin 305 -> 0 bytes
 .../assets/stylesheets/elements/input_right.gif    |  Bin 183 -> 0 bytes
 .../assets/stylesheets/elements/radio.gif          |  Bin 762 -> 0 bytes
 .../assets/stylesheets/elements/select_right.gif   |  Bin 260 -> 0 bytes
 .../grails-app/assets/stylesheets/gradient-alt.png |  Bin 392 -> 0 bytes
 .../assets/stylesheets/gradient-vertical.png       |  Bin 700 -> 0 bytes
 .../grails-app/assets/stylesheets/gradient.png     |  Bin 392 -> 0 bytes
 .../assets/stylesheets/jquery.dataTables.css       |   22 -
 .../assets/stylesheets/jquery.jdMenu.css           |   90 --
 .../assets/stylesheets/jquery.jdMenu.slate.css     |   83 --
 .../plugin/grails-app/assets/stylesheets/reset.css |   69 --
 .../assets/stylesheets/spring-security-ui-auth.css |   43 -
 .../stylesheets/spring-security-ui-common.css      |  304 -----
 .../stylesheets/spring-security-ui-register.css    |   25 -
 .../assets/stylesheets/spring-security-ui.css      |   27 -
 .../springsecurity/ui/SecurityUiTagLib.groovy      |  345 +++---
 .../ui/plugin/grails-app/views/aclClass/create.gsp |   28 +-
 .../ui/plugin/grails-app/views/aclClass/edit.gsp   |   41 +-
 .../ui/plugin/grails-app/views/aclClass/search.gsp |   50 +-
 .../ui/plugin/grails-app/views/aclEntry/create.gsp |   33 +-
 .../ui/plugin/grails-app/views/aclEntry/edit.gsp   |   41 +-
 .../ui/plugin/grails-app/views/aclEntry/search.gsp |  165 +--
 .../grails-app/views/aclObjectIdentity/create.gsp  |   30 +-
 .../grails-app/views/aclObjectIdentity/edit.gsp    |   43 +-
 .../grails-app/views/aclObjectIdentity/search.gsp  |  139 +--
 .../ui/plugin/grails-app/views/aclSid/create.gsp   |   24 +-
 .../ui/plugin/grails-app/views/aclSid/edit.gsp     |   47 +-
 .../ui/plugin/grails-app/views/aclSid/search.gsp   |   77 +-
 .../grails-app/views/includes/_ajaxLogin.gsp       |  102 +-
 .../plugin/grails-app/views/layouts/register.gsp   |   23 +-
 .../grails-app/views/layouts/springSecurityUI.gsp  |  109 +-
 .../ui/plugin/grails-app/views/login/auth.gsp      |   69 +-
 .../grails-app/views/persistentLogin/edit.gsp      |   51 +-
 .../grails-app/views/persistentLogin/search.gsp    |   80 +-
 .../grails-app/views/register/forgotPassword.gsp   |   12 +-
 .../plugin/grails-app/views/register/register.gsp  |   18 +-
 .../grails-app/views/register/resetPassword.gsp    |   15 +-
 .../views/register/securityQuestions.gsp           |    9 +-
 .../grails-app/views/registrationCode/edit.gsp     |   41 +-
 .../grails-app/views/registrationCode/search.gsp   |   68 +-
 .../plugin/grails-app/views/requestmap/create.gsp  |   32 +-
 .../ui/plugin/grails-app/views/requestmap/edit.gsp |   43 +-
 .../plugin/grails-app/views/requestmap/search.gsp  |   80 +-
 .../ui/plugin/grails-app/views/role/create.gsp     |   22 +-
 .../ui/plugin/grails-app/views/role/edit.gsp       |   22 +-
 .../ui/plugin/grails-app/views/role/search.gsp     |   50 +-
 .../grails-app/views/securityInfo/config.gsp       |   15 +-
 .../grails-app/views/securityInfo/currentAuth.gsp  |    8 +-
 .../grails-app/views/securityInfo/mappings.gsp     |    3 +-
 .../views/securityInfo/secureChannel.gsp           |    2 +-
 .../grails-app/views/securityInfo/usercache.gsp    |    9 +-
 .../ui/plugin/grails-app/views/user/create.gsp     |   36 +-
 .../ui/plugin/grails-app/views/user/edit.gsp       |   49 +-
 .../ui/plugin/grails-app/views/user/search.gsp     |  112 +-
 .../ui/plugin/src/main/resources/META-INF/LICENSE  |   14 -
 .../ui/plugin/src/main/resources/META-INF/NOTICE   |   14 -
 .../ChallengeQuestionsCreate.gsp.template          |   41 +-
 .../templates/ChallengeQuestionsEdit.gsp.template  |   37 +-
 .../templates/ChallengeQuestionsIndex.gsp.template |   54 +-
 .../springsecurity/ui/SecurityUiTagLibSpec.groovy  |   57 +
 grails-test-examples/app1/build.gradle             |    1 -
 .../groovy/functionaltests/ForwardingSpec.groovy   |    3 +-
 grails-test-examples/app2/build.gradle             |    1 -
 grails-test-examples/app3/build.gradle             |    1 -
 grails-test-examples/cache/build.gradle            |    1 -
 .../ConfigReportCommandIntegrationSpec.groovy      |    4 +-
 grails-test-examples/datasources/build.gradle      |    1 -
 grails-test-examples/exploded/build.gradle         |    1 -
 .../grails-app/conf/application.yml                |    9 +
 .../test/app/RelaxedPropertyResolutionSpec.groovy  |   56 +
 .../org/demo/spock/PerTestRecordingSpec.groovy     |   80 +-
 grails-test-examples/gorm/build.gradle             |    1 -
 .../graphql/grails-docs-app/build.gradle           |    1 -
 .../grails-multi-datastore-app/build.gradle        |    1 -
 .../graphql/grails-tenant-app/build.gradle         |    1 -
 .../graphql/grails-test-app/build.gradle           |    1 -
 grails-test-examples/hibernate7/app1/build.gradle  |    1 -
 .../groovy/functionaltests/ForwardingSpec.groovy   |    3 +-
 .../hibernate7/datasources/build.gradle            |    1 -
 grails-test-examples/hibernate7/gorm/build.gradle  |    1 -
 .../issue-698-domain-save-npe/build.gradle         |    1 -
 .../hibernate7/scaffolding-fields/build.gradle     |    1 -
 grails-test-examples/hyphenated/build.gradle       |    1 -
 grails-test-examples/issue-11102/build.gradle      |    1 -
 .../issue-698-domain-save-npe/build.gradle         |    1 -
 grails-test-examples/issue-views-182/build.gradle  |    1 -
 .../{plugins/loadafter => latency}/build.gradle    |   28 +-
 .../latency/grails-app/conf/application.yml        |   47 +
 .../grails-app/conf/logback.xml                    |    0
 .../controllers/latencyapp/FastController.groovy   |   20 +-
 .../controllers/latencyapp/SlowController.groovy   |   20 +-
 .../controllers/latencyapp/UrlMappings.groovy      |   12 +-
 .../grails-app/init/latencyapp/Application.groovy  |   10 +-
 .../groovy/latencyapp/LatencyFunctionalSpec.groovy |   62 +
 .../micronaut/MicronautErsatzRoundtripSpec.groovy  |    3 -
 grails-test-examples/namespaces/build.gradle       |    1 -
 grails-test-examples/plugins/exploded/build.gradle |    1 -
 .../plugins/issue11005/build.gradle                |    1 -
 .../plugins/loadafter/build.gradle                 |    1 -
 .../plugins/loadfirst/build.gradle                 |    1 -
 .../plugins/loadsecond/build.gradle                |    1 -
 .../plugins/micronaut-singleton/build.gradle       |    1 +
 .../scaffolding-fields/build.gradle                |    1 -
 grails-test-examples/scaffolding/build.gradle      |    1 -
 .../groovy/com/example/pages/LoginPage.groovy      |    5 +-
 .../groovy/com/example/pages/LogoutPage.groovy     |    5 +-
 .../integration-test/groovy/pages/LoginPage.groovy |    2 +-
 .../integration-test/groovy/pages/LoginPage.groovy |    2 +-
 .../groovy/specs/InheritanceSecuritySpec.groovy    |   12 +-
 .../groovy/specs/NamespaceSecuritySpec.groovy      |    8 +-
 .../integration-test/groovy/pages/LoginPage.groovy |    2 +-
 .../integration-test/groovy/pages/LoginPage.groovy |    2 +-
 .../integration-test/groovy/pages/LoginPage.groovy |    2 +-
 .../integration-test/groovy/pages/LoginPage.groovy |    2 +-
 .../src/testFixtures/groovy/module/RolesTab.groovy |    4 +-
 .../src/testFixtures/groovy/page/CreatePage.groovy |    2 +-
 .../src/testFixtures/groovy/page/EditPage.groovy   |    6 +-
 .../src/testFixtures/groovy/page/SearchPage.groovy |    4 +-
 .../groovy/page/register/ForgotPasswordPage.groovy |    2 +-
 .../groovy/page/register/RegisterPage.groovy       |    2 +-
 .../groovy/page/register/ResetPasswordPage.groovy  |    2 +-
 .../page/register/SecurityQuestionsPage.groovy     |    2 +-
 .../grails-app/assets/javascripts/application.js   |    2 +
 .../grails-app/assets/stylesheets/application.css  |   26 +-
 .../grails-app/assets/stylesheets/main.css         |  615 ---------
 .../grails-app/views/includes/_ajaxLogin.gsp       |   69 --
 .../ui/extended/grails-app/views/layouts/main.gsp  |   28 +-
 .../extended/grails-app/views/layouts/register.gsp |   36 -
 .../grails-app/views/layouts/springSecurityUI.gsp  |   81 --
 .../ui/extended/grails-app/views/login/auth.gsp    |   63 +-
 .../extended/grails-app/views/profile/create.gsp   |   30 +-
 .../ui/extended/grails-app/views/profile/edit.gsp  |   24 +-
 .../views/register/_forgotPasswordMail.gsp         |   25 -
 .../views/register/_verifyRegistrationMail.gsp     |   23 -
 .../grails-app/views/register/forgotPassword.gsp   |   42 -
 .../grails-app/views/register/register.gsp         |   46 -
 .../grails-app/views/register/resetPassword.gsp    |   40 -
 .../views/register/securityQuestions.gsp           |   35 -
 .../ui/extended/grails-app/views/role/create.gsp   |   42 -
 .../ui/extended/grails-app/views/role/edit.gsp     |   49 -
 .../ui/extended/grails-app/views/role/search.gsp   |   56 -
 .../ui/extended/grails-app/views/user/create.gsp   |   55 -
 .../ui/extended/grails-app/views/user/edit.gsp     |   76 --
 .../ui/extended/grails-app/views/user/search.gsp   |   94 --
 .../extended/page/profile/ProfileEditPage.groovy   |    6 +-
 .../extended/spec/ExtendedSecurityInfoSpec.groovy  |    7 +-
 .../grails-app/assets/javascripts/application.js   |    2 +
 .../grails-app/assets/stylesheets/application.css  |   26 +-
 .../simple/grails-app/assets/stylesheets/main.css  |  615 ---------
 .../grails-app/views/includes/_ajaxLogin.gsp       |   69 --
 .../ui/simple/grails-app/views/layouts/main.gsp    |   28 +-
 .../simple/grails-app/views/layouts/register.gsp   |   36 -
 .../grails-app/views/layouts/springSecurityUI.gsp  |   81 --
 .../grails-app/views/persistentLogin/edit.gsp      |   58 -
 .../grails-app/views/persistentLogin/search.gsp    |   73 --
 .../views/register/_forgotPasswordMail.gsp         |   25 -
 .../views/register/_verifyRegistrationMail.gsp     |   23 -
 .../grails-app/views/register/forgotPassword.gsp   |   42 -
 .../simple/grails-app/views/register/register.gsp  |   46 -
 .../grails-app/views/register/resetPassword.gsp    |   40 -
 .../views/register/securityQuestions.gsp           |   35 -
 .../grails-app/views/registrationCode/edit.gsp     |   53 -
 .../grails-app/views/registrationCode/search.gsp   |   66 -
 .../simple/grails-app/views/requestmap/create.gsp  |   47 -
 .../ui/simple/grails-app/views/requestmap/edit.gsp |   54 -
 .../simple/grails-app/views/requestmap/search.gsp  |   73 --
 .../ui/simple/grails-app/views/role/create.gsp     |   42 -
 .../ui/simple/grails-app/views/role/edit.gsp       |   49 -
 .../ui/simple/grails-app/views/role/search.gsp     |   56 -
 .../grails-app/views/securityInfo/config.gsp       |   61 -
 .../grails-app/views/securityInfo/currentAuth.gsp  |   44 -
 .../grails-app/views/securityInfo/filterChains.gsp |   41 -
 .../views/securityInfo/logoutHandlers.gsp          |   29 -
 .../grails-app/views/securityInfo/mappings.gsp     |   34 -
 .../grails-app/views/securityInfo/providers.gsp    |   29 -
 .../views/securityInfo/secureChannel.gsp           |   35 -
 .../grails-app/views/securityInfo/usercache.gsp    |   87 --
 .../ui/simple/grails-app/views/user/create.gsp     |   55 -
 .../ui/simple/grails-app/views/user/edit.gsp       |   76 --
 .../ui/simple/grails-app/views/user/search.gsp     |   94 --
 .../simple/spec/DefaultSecurityInfoSpec.groovy     |    7 +-
 .../GreetingControllerFunctionalSpec.groovy        |    8 +-
 .../groovy/testphases/pages/GreetingPage.groovy    |   12 +-
 .../{cache => undertow}/build.gradle               |   48 +-
 .../grails-app/assets/javascripts/application.js   |    0
 .../grails-app/assets/stylesheets/application.css  |    0
 .../undertow/grails-app/conf/application.yml       |   36 +
 .../grails-app/conf/logback-spring.xml             |    0
 .../grails-app/conf/spring/resources.groovy        |    0
 .../undertowapp/SessionController.groovy           |   24 +-
 .../controllers/undertowapp/UrlMappings.groovy     |   14 +-
 .../grails-app/init/undertowapp/Application.groovy |   18 +-
 .../grails-app/init/undertowapp/BootStrap.groovy   |   13 +-
 .../undertow/grails-app/views/error.gsp            |   16 +-
 .../grails-app/views/index.gsp}                    |   11 +-
 .../undertow/grails-app/views/notFound.gsp         |   15 +-
 .../grails-app/views/session/index.gsp}            |   12 +-
 .../grails-app/views/session/show.gsp}             |    9 +-
 .../groovy/undertowapp/UndertowSessionSpec.groovy  |   61 +
 .../undertowapp/pages/SessionFormPage.groovy       |   12 +-
 .../undertowapp/pages/SessionShowPage.groovy       |   11 +-
 grails-testing-support-core/build.gradle           |    2 +
 .../org/grails/testing/GrailsUnitTest.groovy       |   39 +-
 .../testing/DefineBeansPluginHooksSpec.groovy      |   57 +
 .../build.gradle                                   |   41 +-
 .../latency/LatencyAutoConfiguration.groovy        |   56 +
 .../grails/testing/latency/LatencyFilter.groovy    |   96 ++
 .../testing/latency/LatencyProperties.groovy       |   84 ++
 ...rk.boot.autoconfigure.AutoConfiguration.imports |    1 +
 .../latency/LatencyAutoConfigurationSpec.groovy    |   63 +
 .../testing/latency/LatencyFilterSpec.groovy       |  121 ++
 grails-undertow/plugin/build.gradle                |   63 +
 .../undertow/plugin/UndertowGrailsPlugin.groovy    |   42 +-
 .../plugin/UndertowGrailsPluginSpec.groovy         |   62 +
 grails-undertow/spring-boot/build.gradle           |   81 ++
 .../undertow/core/AccessLogHttpHandlerFactory.java |  118 ++
 .../core/CompressionHttpHandlerFactory.java        |  133 ++
 .../core/ConfigurableUndertowWebServerFactory.java |  113 ++
 .../grails/undertow/core/HttpHandlerFactory.java   |   43 +
 .../grails/undertow/core/SslBuilderCustomizer.java |   93 ++
 .../undertow/core/UndertowBuilderCustomizer.java   |   37 +
 .../grails/undertow/core/UndertowWebServer.java    |  445 +++++++
 .../undertow/core/UndertowWebServerFactory.java    |  233 ++++
 .../autoconfigure/UndertowServerProperties.java    |  388 ++++++
 .../UndertowWebServerConfiguration.java            |   42 +
 .../UndertowWebServerFactoryCustomizer.java        |  241 ++++
 .../web/server/UndertowAccessLogCustomizer.java    |   46 +
 .../server/UndertowManagementServerProperties.java |   53 +
 ...eactiveManagementChildContextConfiguration.java |   60 +
 ...ReactiveManagementContextAutoConfiguration.java |   52 +
 ...ServletManagementChildContextConfiguration.java |   50 +
 ...wServletManagementContextAutoConfiguration.java |   52 +
 .../actuate/web/server/package-info.java           |   20 +
 .../undertow/core/autoconfigure/package-info.java  |   21 +
 ...UndertowReactiveWebServerAutoConfiguration.java |   62 +
 .../core/autoconfigure/reactive/package-info.java  |   20 +
 .../UndertowServletWebServerAutoConfiguration.java |   98 ++
 .../UndertowServletWebServerFactoryCustomizer.java |   44 +
 ...tUndertowServletWebServerFactoryCustomizer.java |   58 +
 .../core/autoconfigure/servlet/package-info.java   |   20 +
 .../apache/grails/undertow/core/package-info.java  |   23 +
 .../core/reactive/UndertowHeadersAdapter.java      |  270 ++++
 .../core/reactive/UndertowHttpHandlerAdapter.java  |  135 ++
 .../reactive/UndertowReactiveWebServerFactory.java |   64 +
 .../core/reactive/UndertowServerHttpRequest.java   |  257 ++++
 .../core/reactive/UndertowServerHttpResponse.java  |  337 +++++
 .../undertow/core/reactive/package-info.java       |   20 +
 .../core/servlet/CompositeResourceManager.java     |   74 ++
 .../DeploymentManagerHttpHandlerFactory.java       |   95 ++
 .../core/servlet/FileSessionPersistence.java       |  144 +++
 .../undertow/core/servlet/JarResourceManager.java  |   81 ++
 .../servlet/UndertowDeploymentInfoCustomizer.java  |   37 +
 .../core/servlet/UndertowServletWebServer.java     |   95 ++
 .../servlet/UndertowServletWebServerFactory.java   |  596 +++++++++
 .../grails/undertow/core/servlet/package-info.java |   20 +
 .../spring-boot/src/main/resources/META-INF/NOTICE |   22 +
 .../additional-spring-configuration-metadata.json  |   13 +
 .../main/resources/META-INF/spring/aot.factories   |    2 +
 ...gure.web.ManagementContextConfiguration.imports |    2 +
 ...rk.boot.autoconfigure.AutoConfiguration.imports |    4 +
 .../grails/undertow/core/UndertowAccess.java       |   34 +
 .../core/UndertowWebServerRuntimeHintsTests.java   |   59 +
 .../UndertowServerPropertiesTests.java             |   81 ++
 .../UndertowWebServerFactoryCustomizerTests.java   |  285 +++++
 .../UndertowManagementServerPropertiesTests.java   |   38 +
 ...towReactiveWebServerAutoConfigurationTests.java |   71 ++
 ...rtowServletWebServerAutoConfigurationTests.java |   74 ++
 ...rtowServletWebServerFactoryCustomizerTests.java |   53 +
 ...ervletWebServerServletContextListenerTests.java |   94 ++
 .../UndertowReactiveWebServerFactoryTests.java     |  101 ++
 .../core/servlet/FileSessionPersistenceTests.java  |   94 ++
 .../core/servlet/JarResourceManagerTests.java      |  103 ++
 .../UndertowServletWebServerFactoryTests.java      |  192 +++
 ...ndertowServletWebServerMvcIntegrationTests.java |  155 +++
 .../grails/undertow/core/servlet/restricted.jks    |  Bin 0 -> 4464 bytes
 .../apache/grails/undertow/core/servlet/test.jks   |  Bin 0 -> 6536 bytes
 .../org/apache/grails/undertow/core/test.jks       |  Bin 0 -> 6536 bytes
 .../UrlMappingsBeanDefinitionsPostProcessor.groovy |  111 ++
 .../web/mapping/UrlMappingsGrailsPlugin.groovy     |   56 +-
 .../web/mapping/UrlMappingsGrailsPluginSpec.groovy |  111 ++
 .../plugin/json/view/JsonViewGrailsPlugin.groovy   |   44 +-
 .../json/view/JsonViewGrailsPluginSpec.groovy      |   69 ++
 .../markup/view/MarkupViewGrailsPlugin.groovy      |   42 +-
 .../markup/view/MarkupViewGrailsPluginSpec.groovy  |   68 +
 .../groovy/org/grails/web/json/JSONTokener.java    |    2 +-
 .../META-INF/spring-configuration-metadata.json    |    7 +-
 .../grails/web/errors/GrailsExceptionResolver.java |   14 +-
 .../web/errors/GrailsExceptionResolverSpec.groovy  |  348 +++---
 grails-web-url-mappings/build.gradle               |   16 +
 .../mapping/cli}/UrlMappingsReportCommand.groovy   |    7 +-
 .../org/grails/web/mapping/RegexUrlMapping.java    |    2 +-
 grails-wrapper/build.gradle                        |    9 +-
 .../src/main/java/grails/init/GrailsUpdater.java   |  125 +-
 .../main/java/grails/init/GrailsWrapperRepo.java   |   86 +-
 .../groovy/grails/init/GrailsUpdaterSpec.groovy    |  254 ++++
 .../grails/init/GrailsWrapperRepoSpec.groovy       |  150 +++
 settings.gradle                                    |   26 +-
 971 files changed, 39514 insertions(+), 10738 deletions(-)
 create mode 100644 .github/workflows/release-verify.yml
 create mode 100755 etc/bin/normalize_annotations.groovy
 create mode 100644 gradle/cli-companion-bom-constraints.gradle
 create mode 100644 gradle/groovy-compile-configscript.groovy
 copy grails-async/plugin/src/{main/groovy/org/grails/plugins/web/async/ControllersAsyncGrailsPlugin.groovy => test/groovy/org/grails/plugins/web/async/ControllersAsyncGrailsPluginSpec.groovy} (52%)
 create mode 100644 grails-cache/src/main/groovy/grails/plugin/cache/GrailsCacheAutoConfiguration.groovy
 create mode 100644 grails-cache/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
 create mode 100644 grails-cache/src/test/groovy/grails/plugin/cache/CacheGrailsPluginSpec.groovy
 create mode 100644 grails-cache/src/test/groovy/grails/plugin/cache/GrailsCacheAutoConfigurationSpec.groovy
 create mode 100644 grails-controllers/src/main/groovy/org/grails/plugins/web/controllers/ControllerBeanDefinitionsPostProcessor.groovy
 create mode 100644 grails-controllers/src/test/groovy/org/grails/plugins/web/controllers/ControllerBeanDefinitionsPostProcessorSpec.groovy
 create mode 100644 grails-controllers/src/test/groovy/org/grails/plugins/web/controllers/ControllersGrailsPluginSpec.groovy
 create mode 100644 grails-converters/src/test/groovy/org/grails/plugins/converters/ConvertersGrailsPluginSpec.groovy
 rename grails-core/src/{main/groovy/grails/dev/commands => cli/groovy/org/apache/grails/core/cli}/ApplicationCommand.groovy (97%)
 rename grails-core/src/{main/groovy/grails/dev/commands => cli/groovy/org/apache/grails/core/cli}/ApplicationContextCommandRegistry.groovy (78%)
 rename grails-core/src/{main/groovy/grails/dev/commands => cli/groovy/org/apache/grails/core/cli}/ConfigReportCommand.groovy (99%)
 copy grails-core/src/{main/groovy/grails/dev/commands => cli/groovy/org/apache/grails/core/cli}/ExecutionContext.groovy (96%)
 rename grails-core/src/{main/groovy/grails/dev/commands => cli/groovy/org/apache/grails/core/cli}/GrailsApplicationCommand.groovy (84%)
 create mode 100644 grails-core/src/cli/groovy/org/apache/grails/core/cli/compiler/CommandFactoriesTransformation.groovy
 rename grails-core/src/{main/groovy/grails/dev/commands => cli/groovy/org/apache/grails/core/cli}/io/FileSystemInteraction.groovy (98%)
 rename grails-core/src/{main/groovy/grails/dev/commands => cli/groovy/org/apache/grails/core/cli}/io/FileSystemInteractionImpl.groovy (99%)
 copy grails-core/src/{main/groovy/grails/dev/commands => cli/groovy/org/apache/grails/core/cli}/template/TemplateException.groovy (95%)
 rename grails-core/src/{main/groovy/grails/dev/commands => cli/groovy/org/apache/grails/core/cli}/template/TemplateRenderer.groovy (99%)
 rename grails-core/src/{main/groovy/grails/dev/commands => cli/groovy/org/apache/grails/core/cli}/template/TemplateRendererImpl.groovy (98%)
 create mode 100644 grails-core/src/cli/resources/META-INF/grails-cli.factories
 create mode 100644 grails-core/src/cli/resources/META-INF/services/org.codehaus.groovy.transform.ASTTransformation
 create mode 100644 grails-core/src/main/groovy/org/grails/compiler/injection/FactoriesFileWriter.groovy
 create mode 100644 grails-core/src/test/groovy/grails/boot/GrailsAppEnvironmentConversionSpec.groovy
 rename grails-core/src/test/groovy/{grails/dev/commands => org/apache/grails/core/cli}/ConfigReportCommandSpec.groovy (99%)
 create mode 100644 grails-core/src/test/groovy/org/apache/grails/core/cli/compiler/CommandFactoriesTransformationSpec.groovy
 create mode 100644 grails-core/src/test/groovy/org/grails/compiler/injection/FactoriesFileWriterSpec.groovy
 create mode 100644 grails-data-graphql/plugin/src/test/groovy/org/grails/gorm/graphql/plugin/GormGraphqlGrailsPluginSpec.groovy
 delete mode 100644 grails-data-hibernate5/core/src/test/groovy/grails/gorm/tests/DeleteAllWhereSpec.groovy
 delete mode 100644 grails-data-hibernate5/core/src/test/groovy/grails/gorm/tests/WhereQueryBugFixSpec.groovy
 delete mode 100644 grails-data-hibernate5/core/src/test/groovy/grails/gorm/tests/WhereQueryOldIssueVerificationSpec.groovy
 create mode 100644 grails-data-hibernate5/core/src/test/groovy/org/apache/grails/data/testing/tck/base/GrailsDataTckManagerSpec.groovy
 rename grails-data-hibernate5/dbmigration/src/{main/groovy/org/grails/plugins/databasemigration/command => cli/groovy/org/apache/grails/data/hibernate5/dbmigration/cli}/ApplicationContextDatabaseMigrationCommand.groovy (97%)
 rename grails-data-hibernate5/dbmigration/src/{main/groovy/org/grails/plugins/databasemigration/command => cli/groovy/org/apache/grails/data/hibernate5/dbmigration/cli}/DatabaseMigrationCommand.groovy (99%)
 rename {grails-data-hibernate7/dbmigration/grails-app/commands/org/grails/plugins/databasemigration/command => grails-data-hibernate5/dbmigration/src/cli/groovy/org/apache/grails/data/hibernate5/dbmigration/cli}/DbmChangelogSyncCommand.groovy (91%)
 rename grails-data-hibernate5/dbmigration/{grails-app/commands/org/grails/plugins/databasemigration/command => src/cli/groovy/org/apache/grails/data/hibernate5/dbmigration/cli}/DbmChangelogSyncSqlCommand.groovy (92%)
 rename {grails-data-hibernate7/dbmigration/src/main/groovy/org/grails/plugins/databasemigration/command => grails-data-hibernate5/dbmigration/src/cli/groovy/org/apache/grails/data/hibernate5/dbmigration/cli}/DbmChangelogToGroovy.groovy (98%)
 rename {grails-data-hibernate7/dbmigration/grails-app/commands/org/grails/plugins/databasemigration/command => grails-data-hibernate5/dbmigration/src/cli/groovy/org/apache/grails/data/hibernate5/dbmigration/cli}/DbmClearChecksumsCommand.groovy (91%)
 rename {grails-data-hibernate7/dbmigration/src/main/groovy/org/grails/plugins/databasemigration/command => grails-data-hibernate5/dbmigration/src/cli/groovy/org/apache/grails/data/hibernate5/dbmigration/cli}/DbmCreateChangelog.groovy (97%)
 rename {grails-data-hibernate7/dbmigration/grails-app/commands/org/grails/plugins/databasemigration/command => grails-data-hibernate5/dbmigration/src/cli/groovy/org/apache/grails/data/hibernate5/dbmigration/cli}/DbmDbDocCommand.groovy (92%)
 rename {grails-data-hibernate7/dbmigration/grails-app/commands/org/grails/plugins/databasemigration/command => grails-data-hibernate5/dbmigration/src/cli/groovy/org/apache/grails/data/hibernate5/dbmigration/cli}/DbmDiffCommand.groovy (96%)
 rename grails-data-hibernate5/dbmigration/{grails-app/commands/org/grails/plugins/databasemigration/command => src/cli/groovy/org/apache/grails/data/hibernate5/dbmigration/cli}/DbmDropAllCommand.groovy (93%)
 rename grails-data-hibernate5/dbmigration/{grails-app/commands/org/grails/plugins/databasemigration/command => src/cli/groovy/org/apache/grails/data/hibernate5/dbmigration/cli}/DbmFutureRollbackCountSqlCommand.groovy (94%)
 rename {grails-data-hibernate7/dbmigration/grails-app/commands/org/grails/plugins/databasemigration/command => grails-data-hibernate5/dbmigration/src/cli/groovy/org/apache/grails/data/hibernate5/dbmigration/cli}/DbmFutureRollbackSqlCommand.groovy (92%)
 rename grails-data-hibernate5/dbmigration/{grails-app/commands/org/grails/plugins/databasemigration/command => src/cli/groovy/org/apache/grails/data/hibernate5/dbmigration/cli}/DbmGenerateChangelogCommand.groovy (94%)
 rename grails-data-hibernate5/dbmigration/{grails-app/commands/org/grails/plugins/databasemigration/command => src/cli/groovy/org/apache/grails/data/hibernate5/dbmigration/cli}/DbmGenerateGormChangelogCommand.groovy (95%)
 rename {grails-data-hibernate7/dbmigration/grails-app/commands/org/grails/plugins/databasemigration/command => grails-data-hibernate5/dbmigration/src/cli/groovy/org/apache/grails/data/hibernate5/dbmigration/cli}/DbmGormDiffCommand.groovy (95%)
 rename grails-data-hibernate5/dbmigration/{grails-app/commands/org/grails/plugins/databasemigration/command => src/cli/groovy/org/apache/grails/data/hibernate5/dbmigration/cli}/DbmListLocksCommand.groovy (94%)
 rename {grails-data-hibernate7/dbmigration/grails-app/commands/org/grails/plugins/databasemigration/command => grails-data-hibernate5/dbmigration/src/cli/groovy/org/apache/grails/data/hibernate5/dbmigration/cli}/DbmMarkNextChangesetRanCommand.groovy (91%)
 rename {grails-data-hibernate7/dbmigration/grails-app/commands/org/grails/plugins/databasemigration/command => grails-data-hibernate5/dbmigration/src/cli/groovy/org/apache/grails/data/hibernate5/dbmigration/cli}/DbmMarkNextChangesetRanSqlCommand.groovy (92%)
 rename {grails-data-hibernate7/dbmigration/grails-app/commands/org/grails/plugins/databasemigration/command => grails-data-hibernate5/dbmigration/src/cli/groovy/org/apache/grails/data/hibernate5/dbmigration/cli}/DbmPreviousChangesetSqlCommand.groovy (95%)
 rename grails-data-hibernate5/dbmigration/{grails-app/commands/org/grails/plugins/databasemigration/command => src/cli/groovy/org/apache/grails/data/hibernate5/dbmigration/cli}/DbmReleaseLocksCommand.groovy (91%)
 rename {grails-data-hibernate7/dbmigration/grails-app/commands/org/grails/plugins/databasemigration/command => grails-data-hibernate5/dbmigration/src/cli/groovy/org/apache/grails/data/hibernate5/dbmigration/cli}/DbmRollbackCommand.groovy (93%)
 rename grails-data-hibernate5/dbmigration/{grails-app/commands/org/grails/plugins/databasemigration/command => src/cli/groovy/org/apache/grails/data/hibernate5/dbmigration/cli}/DbmRollbackCountCommand.groovy (93%)
 rename grails-data-hibernate5/dbmigration/{grails-app/commands/org/grails/plugins/databasemigration/command => src/cli/groovy/org/apache/grails/data/hibernate5/dbmigration/cli}/DbmRollbackCountSqlCommand.groovy (94%)
 rename {grails-data-hibernate7/dbmigration/grails-app/commands/org/grails/plugins/databasemigration/command => grails-data-hibernate5/dbmigration/src/cli/groovy/org/apache/grails/data/hibernate5/dbmigration/cli}/DbmRollbackSqlCommand.groovy (93%)
 rename {grails-data-hibernate7/dbmigration/grails-app/commands/org/grails/plugins/databasemigration/command => grails-data-hibernate5/dbmigration/src/cli/groovy/org/apache/grails/data/hibernate5/dbmigration/cli}/DbmRollbackToDateCommand.groovy (94%)
 rename {grails-data-hibernate7/dbmigration/grails-app/commands/org/grails/plugins/databasemigration/command => grails-data-hibernate5/dbmigration/src/cli/groovy/org/apache/grails/data/hibernate5/dbmigration/cli}/DbmRollbackToDateSqlCommand.groovy (95%)
 rename {grails-data-hibernate7/dbmigration/grails-app/commands/org/grails/plugins/databasemigration/command => grails-data-hibernate5/dbmigration/src/cli/groovy/org/apache/grails/data/hibernate5/dbmigration/cli}/DbmStatusCommand.groovy (93%)
 rename {grails-data-hibernate7/dbmigration/grails-app/commands/org/grails/plugins/databasemigration/command => grails-data-hibernate5/dbmigration/src/cli/groovy/org/apache/grails/data/hibernate5/dbmigration/cli}/DbmTagCommand.groovy (92%)
 copy grails-data-hibernate5/dbmigration/{grails-app/commands/org/grails/plugins/databasemigration/command => src/cli/groovy/org/apache/grails/data/hibernate5/dbmigration/cli}/DbmUpdateCommand.groovy (91%)
 rename grails-data-hibernate5/dbmigration/{grails-app/commands/org/grails/plugins/databasemigration/command => src/cli/groovy/org/apache/grails/data/hibernate5/dbmigration/cli}/DbmUpdateCountCommand.groovy (93%)
 rename grails-data-hibernate5/dbmigration/{grails-app/commands/org/grails/plugins/databasemigration/command => src/cli/groovy/org/apache/grails/data/hibernate5/dbmigration/cli}/DbmUpdateCountSqlCommand.groovy (94%)
 rename {grails-data-hibernate7/dbmigration/grails-app/commands/org/grails/plugins/databasemigration/command => grails-data-hibernate5/dbmigration/src/cli/groovy/org/apache/grails/data/hibernate5/dbmigration/cli}/DbmUpdateSqlCommand.groovy (92%)
 copy grails-data-hibernate5/dbmigration/{grails-app/commands/org/grails/plugins/databasemigration/command => src/cli/groovy/org/apache/grails/data/hibernate5/dbmigration/cli}/DbmValidateCommand.groovy (91%)
 rename grails-data-hibernate5/dbmigration/src/{main/groovy/org/grails/plugins/databasemigration/command => cli/groovy/org/apache/grails/data/hibernate5/dbmigration/cli}/ScriptDatabaseMigrationCommand.groovy (97%)
 rename grails-data-hibernate5/dbmigration/src/{main/scripts => cli/resources/META-INF/commands}/dbm-changelog-to-groovy.groovy (95%)
 rename grails-data-hibernate5/dbmigration/src/{main/scripts => cli/resources/META-INF/commands}/dbm-create-changelog.groovy (95%)
 rename grails-data-hibernate5/dbmigration/src/test/groovy/org/{grails/plugins/databasemigration/command => apache/grails/data/hibernate5/dbmigration/cli}/ApplicationContextDatabaseMigrationCommandSpec.groovy (96%)
 rename grails-data-hibernate5/dbmigration/src/test/groovy/org/{grails/plugins/databasemigration/command => apache/grails/data/hibernate5/dbmigration/cli}/DatabaseMigrationCommandConfigSpec.groovy (98%)
 rename grails-data-hibernate5/dbmigration/src/test/groovy/org/{grails/plugins/databasemigration/command => apache/grails/data/hibernate5/dbmigration/cli}/DatabaseMigrationCommandSpec.groovy (96%)
 rename grails-data-hibernate5/dbmigration/src/test/groovy/org/{grails/plugins/databasemigration/command => apache/grails/data/hibernate5/dbmigration/cli}/DbmChangelogSyncCommandSpec.groovy (93%)
 rename grails-data-hibernate5/dbmigration/src/test/groovy/org/{grails/plugins/databasemigration/command => apache/grails/data/hibernate5/dbmigration/cli}/DbmChangelogSyncCommandSqlSpec.groovy (95%)
 rename {grails-data-hibernate7/dbmigration/src/test/groovy/org/grails/plugins/databasemigration/command => grails-data-hibernate5/dbmigration/src/test/groovy/org/apache/grails/data/hibernate5/dbmigration/cli}/DbmClearChecksumsCommandSpec.groovy (95%)
 rename grails-data-hibernate5/dbmigration/src/test/groovy/org/{grails/plugins/databasemigration/command => apache/grails/data/hibernate5/dbmigration/cli}/DbmDiffCommandSpec.groovy (97%)
 rename grails-data-hibernate5/dbmigration/src/test/groovy/org/{grails/plugins/databasemigration/command => apache/grails/data/hibernate5/dbmigration/cli}/DbmDropAllCommandSpec.groovy (93%)
 rename grails-data-hibernate5/dbmigration/src/test/groovy/org/{grails/plugins/databasemigration/command => apache/grails/data/hibernate5/dbmigration/cli}/DbmFutureRollbackCountSqlCommandSpec.groovy (97%)
 rename grails-data-hibernate5/dbmigration/src/test/groovy/org/{grails/plugins/databasemigration/command => apache/grails/data/hibernate5/dbmigration/cli}/DbmFutureRollbackSqlCommandSpec.groovy (97%)
 rename grails-data-hibernate5/dbmigration/src/test/groovy/org/{grails/plugins/databasemigration/command => apache/grails/data/hibernate5/dbmigration/cli}/DbmGenerateChangelogCommandSpec.groovy (97%)
 rename grails-data-hibernate5/dbmigration/src/test/groovy/org/{grails/plugins/databasemigration/command => apache/grails/data/hibernate5/dbmigration/cli}/DbmGenerateGormChangelogCommandSpec.groovy (98%)
 rename grails-data-hibernate5/dbmigration/src/test/groovy/org/{grails/plugins/databasemigration/command => apache/grails/data/hibernate5/dbmigration/cli}/DbmGormDiffCommandSpec.groovy (97%)
 rename {grails-data-hibernate7/dbmigration/src/test/groovy/org/grails/plugins/databasemigration/command => grails-data-hibernate5/dbmigration/src/test/groovy/org/apache/grails/data/hibernate5/dbmigration/cli}/DbmListLocksCommandSpec.groovy (95%)
 rename {grails-data-hibernate7/dbmigration/src/test/groovy/org/grails/plugins/databasemigration/command => grails-data-hibernate5/dbmigration/src/test/groovy/org/apache/grails/data/hibernate5/dbmigration/cli}/DbmMarkNextChangesetRanCommandSpec.groovy (93%)
 rename {grails-data-hibernate7/dbmigration/src/test/groovy/org/grails/plugins/databasemigration/command => grails-data-hibernate5/dbmigration/src/test/groovy/org/apache/grails/data/hibernate5/dbmigration/cli}/DbmMarkNextChangesetRanSqlCommandSpec.groovy (95%)
 rename {grails-data-hibernate7/dbmigration/src/test/groovy/org/grails/plugins/databasemigration/command => grails-data-hibernate5/dbmigration/src/test/groovy/org/apache/grails/data/hibernate5/dbmigration/cli}/DbmPreviousChangesetSqlCommandSpec.groovy (97%)
 rename grails-data-hibernate5/dbmigration/src/test/groovy/org/{grails/plugins/databasemigration/command => apache/grails/data/hibernate5/dbmigration/cli}/DbmReleaseLocksCommandSpec.groovy (93%)
 rename {grails-data-hibernate7/dbmigration/src/test/groovy/org/grails/plugins/databasemigration/command => grails-data-hibernate5/dbmigration/src/test/groovy/org/apache/grails/data/hibernate5/dbmigration/cli}/DbmRollbackCommandSpec.groovy (97%)
 rename grails-data-hibernate5/dbmigration/src/test/groovy/org/{grails/plugins/databasemigration/command => apache/grails/data/hibernate5/dbmigration/cli}/DbmRollbackCountCommandSpec.groovy (97%)
 rename {grails-data-hibernate7/dbmigration/src/test/groovy/org/grails/plugins/databasemigration/command => grails-data-hibernate5/dbmigration/src/test/groovy/org/apache/grails/data/hibernate5/dbmigration/cli}/DbmRollbackCountSqlCommandSpec.groovy (97%)
 rename {grails-data-hibernate7/dbmigration/src/test/groovy/org/grails/plugins/databasemigration/command => grails-data-hibernate5/dbmigration/src/test/groovy/org/apache/grails/data/hibernate5/dbmigration/cli}/DbmRollbackSqlCommandSpec.groovy (97%)
 rename {grails-data-hibernate7/dbmigration/src/test/groovy/org/grails/plugins/databasemigration/command => grails-data-hibernate5/dbmigration/src/test/groovy/org/apache/grails/data/hibernate5/dbmigration/cli}/DbmRollbackToDateCommandSpec.groovy (97%)
 rename {grails-data-hibernate7/dbmigration/src/test/groovy/org/grails/plugins/databasemigration/command => grails-data-hibernate5/dbmigration/src/test/groovy/org/apache/grails/data/hibernate5/dbmigration/cli}/DbmRollbackToDateSqlCommandSpec.groovy (97%)
 rename {grails-data-hibernate7/dbmigration/src/test/groovy/org/grails/plugins/databasemigration/command => grails-data-hibernate5/dbmigration/src/test/groovy/org/apache/grails/data/hibernate5/dbmigration/cli}/DbmStatusCommandSpec.groovy (94%)
 rename grails-data-hibernate5/dbmigration/src/test/groovy/org/{grails/plugins/databasemigration/command => apache/grails/data/hibernate5/dbmigration/cli}/DbmUpdateCommandSpec.groovy (97%)
 rename grails-data-hibernate5/dbmigration/src/test/groovy/org/{grails/plugins/databasemigration/command => apache/grails/data/hibernate5/dbmigration/cli}/DbmUpdateCountCommandSpec.groovy (96%)
 rename {grails-data-hibernate7/dbmigration/src/test/groovy/org/grails/plugins/databasemigration/command => grails-data-hibernate5/dbmigration/src/test/groovy/org/apache/grails/data/hibernate5/dbmigration/cli}/DbmUpdateCountSqlCommandSpec.groovy (97%)
 rename grails-data-hibernate5/dbmigration/src/test/groovy/org/{grails/plugins/databasemigration/command => apache/grails/data/hibernate5/dbmigration/cli}/DbmUpdateSqlCommandSpec.groovy (98%)
 rename grails-data-hibernate5/dbmigration/src/test/groovy/org/{grails/plugins/databasemigration/command => apache/grails/data/hibernate5/dbmigration/cli}/DbmValidateCommandSpec.groovy (96%)
 rename {grails-data-hibernate7/dbmigration/src/test/groovy/org/grails/plugins/databasemigration/command => grails-data-hibernate5/dbmigration/src/test/groovy/org/apache/grails/data/hibernate5/dbmigration/cli}/ScriptDatabaseMigrationCommandSpec.groovy (97%)
 copy {grails-data-hibernate7 => grails-data-hibernate5}/dbmigration/src/test/groovy/org/grails/plugins/databasemigration/DatabaseMigrationGrailsPluginSpec.groovy (80%)
 rename grails-data-hibernate5/grails-plugin/src/{main/groovy/grails/plugin/hibernate/commands => cli/groovy/org/apache/grails/data/hibernate5/cli}/SchemaExportCommand.groovy (96%)
 delete mode 100644 grails-data-hibernate7/core/src/test/groovy/grails/gorm/tests/DeleteAllWhereSpec.groovy
 delete mode 100644 grails-data-hibernate7/core/src/test/groovy/grails/gorm/tests/WhereQueryBugFixSpec.groovy
 delete mode 100644 grails-data-hibernate7/core/src/test/groovy/grails/gorm/tests/WhereQueryOldIssueVerificationSpec.groovy
 rename grails-data-hibernate7/dbmigration/src/{main/groovy/org/grails/plugins/databasemigration/command => cli/groovy/org/apache/grails/data/hibernate7/dbmigration/cli}/ApplicationContextDatabaseMigrationCommand.groovy (97%)
 rename grails-data-hibernate7/dbmigration/src/{main/groovy/org/grails/plugins/databasemigration/command => cli/groovy/org/apache/grails/data/hibernate7/dbmigration/cli}/DatabaseMigrationCommand.groovy (99%)
 rename {grails-data-hibernate5/dbmigration/grails-app/commands/org/grails/plugins/databasemigration/command => grails-data-hibernate7/dbmigration/src/cli/groovy/org/apache/grails/data/hibernate7/dbmigration/cli}/DbmChangelogSyncCommand.groovy (91%)
 rename grails-data-hibernate7/dbmigration/{grails-app/commands/org/grails/plugins/databasemigration/command => src/cli/groovy/org/apache/grails/data/hibernate7/dbmigration/cli}/DbmChangelogSyncSqlCommand.groovy (92%)
 rename {grails-data-hibernate5/dbmigration/src/main/groovy/org/grails/plugins/databasemigration/command => grails-data-hibernate7/dbmigration/src/cli/groovy/org/apache/grails/data/hibernate7/dbmigration/cli}/DbmChangelogToGroovy.groovy (98%)
 rename {grails-data-hibernate5/dbmigration/grails-app/commands/org/grails/plugins/databasemigration/command => grails-data-hibernate7/dbmigration/src/cli/groovy/org/apache/grails/data/hibernate7/dbmigration/cli}/DbmClearChecksumsCommand.groovy (91%)
 rename {grails-data-hibernate5/dbmigration/src/main/groovy/org/grails/plugins/databasemigration/command => grails-data-hibernate7/dbmigration/src/cli/groovy/org/apache/grails/data/hibernate7/dbmigration/cli}/DbmCreateChangelog.groovy (97%)
 rename {grails-data-hibernate5/dbmigration/grails-app/commands/org/grails/plugins/databasemigration/command => grails-data-hibernate7/dbmigration/src/cli/groovy/org/apache/grails/data/hibernate7/dbmigration/cli}/DbmDbDocCommand.groovy (92%)
 rename {grails-data-hibernate5/dbmigration/grails-app/commands/org/grails/plugins/databasemigration/command => grails-data-hibernate7/dbmigration/src/cli/groovy/org/apache/grails/data/hibernate7/dbmigration/cli}/DbmDiffCommand.groovy (96%)
 rename grails-data-hibernate7/dbmigration/{grails-app/commands/org/grails/plugins/databasemigration/command => src/cli/groovy/org/apache/grails/data/hibernate7/dbmigration/cli}/DbmDropAllCommand.groovy (93%)
 rename grails-data-hibernate7/dbmigration/{grails-app/commands/org/grails/plugins/databasemigration/command => src/cli/groovy/org/apache/grails/data/hibernate7/dbmigration/cli}/DbmFutureRollbackCountSqlCommand.groovy (94%)
 rename {grails-data-hibernate5/dbmigration/grails-app/commands/org/grails/plugins/databasemigration/command => grails-data-hibernate7/dbmigration/src/cli/groovy/org/apache/grails/data/hibernate7/dbmigration/cli}/DbmFutureRollbackSqlCommand.groovy (92%)
 rename grails-data-hibernate7/dbmigration/{grails-app/commands/org/grails/plugins/databasemigration/command => src/cli/groovy/org/apache/grails/data/hibernate7/dbmigration/cli}/DbmGenerateChangelogCommand.groovy (94%)
 rename grails-data-hibernate7/dbmigration/{grails-app/commands/org/grails/plugins/databasemigration/command => src/cli/groovy/org/apache/grails/data/hibernate7/dbmigration/cli}/DbmGenerateGormChangelogCommand.groovy (95%)
 rename {grails-data-hibernate5/dbmigration/grails-app/commands/org/grails/plugins/databasemigration/command => grails-data-hibernate7/dbmigration/src/cli/groovy/org/apache/grails/data/hibernate7/dbmigration/cli}/DbmGormDiffCommand.groovy (95%)
 rename grails-data-hibernate7/dbmigration/{grails-app/commands/org/grails/plugins/databasemigration/command => src/cli/groovy/org/apache/grails/data/hibernate7/dbmigration/cli}/DbmListLocksCommand.groovy (94%)
 rename {grails-data-hibernate5/dbmigration/grails-app/commands/org/grails/plugins/databasemigration/command => grails-data-hibernate7/dbmigration/src/cli/groovy/org/apache/grails/data/hibernate7/dbmigration/cli}/DbmMarkNextChangesetRanCommand.groovy (91%)
 rename {grails-data-hibernate5/dbmigration/grails-app/commands/org/grails/plugins/databasemigration/command => grails-data-hibernate7/dbmigration/src/cli/groovy/org/apache/grails/data/hibernate7/dbmigration/cli}/DbmMarkNextChangesetRanSqlCommand.groovy (92%)
 rename {grails-data-hibernate5/dbmigration/grails-app/commands/org/grails/plugins/databasemigration/command => grails-data-hibernate7/dbmigration/src/cli/groovy/org/apache/grails/data/hibernate7/dbmigration/cli}/DbmPreviousChangesetSqlCommand.groovy (95%)
 rename grails-data-hibernate7/dbmigration/{grails-app/commands/org/grails/plugins/databasemigration/command => src/cli/groovy/org/apache/grails/data/hibernate7/dbmigration/cli}/DbmReleaseLocksCommand.groovy (91%)
 rename {grails-data-hibernate5/dbmigration/grails-app/commands/org/grails/plugins/databasemigration/command => grails-data-hibernate7/dbmigration/src/cli/groovy/org/apache/grails/data/hibernate7/dbmigration/cli}/DbmRollbackCommand.groovy (93%)
 rename grails-data-hibernate7/dbmigration/{grails-app/commands/org/grails/plugins/databasemigration/command => src/cli/groovy/org/apache/grails/data/hibernate7/dbmigration/cli}/DbmRollbackCountCommand.groovy (93%)
 rename grails-data-hibernate7/dbmigration/{grails-app/commands/org/grails/plugins/databasemigration/command => src/cli/groovy/org/apache/grails/data/hibernate7/dbmigration/cli}/DbmRollbackCountSqlCommand.groovy (94%)
 rename {grails-data-hibernate5/dbmigration/grails-app/commands/org/grails/plugins/databasemigration/command => grails-data-hibernate7/dbmigration/src/cli/groovy/org/apache/grails/data/hibernate7/dbmigration/cli}/DbmRollbackSqlCommand.groovy (93%)
 rename {grails-data-hibernate5/dbmigration/grails-app/commands/org/grails/plugins/databasemigration/command => grails-data-hibernate7/dbmigration/src/cli/groovy/org/apache/grails/data/hibernate7/dbmigration/cli}/DbmRollbackToDateCommand.groovy (94%)
 rename {grails-data-hibernate5/dbmigration/grails-app/commands/org/grails/plugins/databasemigration/command => grails-data-hibernate7/dbmigration/src/cli/groovy/org/apache/grails/data/hibernate7/dbmigration/cli}/DbmRollbackToDateSqlCommand.groovy (95%)
 rename {grails-data-hibernate5/dbmigration/grails-app/commands/org/grails/plugins/databasemigration/command => grails-data-hibernate7/dbmigration/src/cli/groovy/org/apache/grails/data/hibernate7/dbmigration/cli}/DbmStatusCommand.groovy (93%)
 rename {grails-data-hibernate5/dbmigration/grails-app/commands/org/grails/plugins/databasemigration/command => grails-data-hibernate7/dbmigration/src/cli/groovy/org/apache/grails/data/hibernate7/dbmigration/cli}/DbmTagCommand.groovy (92%)
 rename grails-data-hibernate7/dbmigration/{grails-app/commands/org/grails/plugins/databasemigration/command => src/cli/groovy/org/apache/grails/data/hibernate7/dbmigration/cli}/DbmUpdateCommand.groovy (91%)
 rename grails-data-hibernate7/dbmigration/{grails-app/commands/org/grails/plugins/databasemigration/command => src/cli/groovy/org/apache/grails/data/hibernate7/dbmigration/cli}/DbmUpdateCountCommand.groovy (93%)
 rename grails-data-hibernate7/dbmigration/{grails-app/commands/org/grails/plugins/databasemigration/command => src/cli/groovy/org/apache/grails/data/hibernate7/dbmigration/cli}/DbmUpdateCountSqlCommand.groovy (94%)
 rename {grails-data-hibernate5/dbmigration/grails-app/commands/org/grails/plugins/databasemigration/command => grails-data-hibernate7/dbmigration/src/cli/groovy/org/apache/grails/data/hibernate7/dbmigration/cli}/DbmUpdateSqlCommand.groovy (92%)
 rename grails-data-hibernate7/dbmigration/{grails-app/commands/org/grails/plugins/databasemigration/command => src/cli/groovy/org/apache/grails/data/hibernate7/dbmigration/cli}/DbmValidateCommand.groovy (91%)
 rename grails-data-hibernate7/dbmigration/src/{main/groovy/org/grails/plugins/databasemigration/command => cli/groovy/org/apache/grails/data/hibernate7/dbmigration/cli}/ScriptDatabaseMigrationCommand.groovy (97%)
 rename grails-data-hibernate7/dbmigration/src/{main/scripts => cli/resources/META-INF/commands}/dbm-changelog-to-groovy.groovy (95%)
 rename grails-data-hibernate7/dbmigration/src/{main/scripts => cli/resources/META-INF/commands}/dbm-create-changelog.groovy (95%)
 rename grails-data-hibernate7/dbmigration/src/test/groovy/org/{grails/plugins/databasemigration/command => apache/grails/data/hibernate7/dbmigration/cli}/ApplicationContextDatabaseMigrationCommandSpec.groovy (96%)
 rename grails-data-hibernate7/dbmigration/src/test/groovy/org/{grails/plugins/databasemigration/command => apache/grails/data/hibernate7/dbmigration/cli}/DatabaseMigrationCommandConfigSpec.groovy (98%)
 rename grails-data-hibernate7/dbmigration/src/test/groovy/org/{grails/plugins/databasemigration/command => apache/grails/data/hibernate7/dbmigration/cli}/DatabaseMigrationCommandSpec.groovy (97%)
 rename grails-data-hibernate7/dbmigration/src/test/groovy/org/{grails/plugins/databasemigration/command => apache/grails/data/hibernate7/dbmigration/cli}/DbmChangelogSyncCommandSpec.groovy (93%)
 rename grails-data-hibernate7/dbmigration/src/test/groovy/org/{grails/plugins/databasemigration/command => apache/grails/data/hibernate7/dbmigration/cli}/DbmChangelogSyncCommandSqlSpec.groovy (95%)
 rename {grails-data-hibernate5/dbmigration/src/test/groovy/org/grails/plugins/databasemigration/command => grails-data-hibernate7/dbmigration/src/test/groovy/org/apache/grails/data/hibernate7/dbmigration/cli}/DbmClearChecksumsCommandSpec.groovy (95%)
 rename grails-data-hibernate7/dbmigration/src/test/groovy/org/{grails/plugins/databasemigration/command => apache/grails/data/hibernate7/dbmigration/cli}/DbmDiffCommandSpec.groovy (97%)
 rename grails-data-hibernate7/dbmigration/src/test/groovy/org/{grails/plugins/databasemigration/command => apache/grails/data/hibernate7/dbmigration/cli}/DbmDropAllCommandSpec.groovy (93%)
 rename grails-data-hibernate7/dbmigration/src/test/groovy/org/{grails/plugins/databasemigration/command => apache/grails/data/hibernate7/dbmigration/cli}/DbmFutureRollbackCountSqlCommandSpec.groovy (97%)
 rename grails-data-hibernate7/dbmigration/src/test/groovy/org/{grails/plugins/databasemigration/command => apache/grails/data/hibernate7/dbmigration/cli}/DbmFutureRollbackSqlCommandSpec.groovy (97%)
 rename grails-data-hibernate7/dbmigration/src/test/groovy/org/{grails/plugins/databasemigration/command => apache/grails/data/hibernate7/dbmigration/cli}/DbmGenerateChangelogCommandSpec.groovy (97%)
 rename grails-data-hibernate7/dbmigration/src/test/groovy/org/{grails/plugins/databasemigration/command => apache/grails/data/hibernate7/dbmigration/cli}/DbmGenerateGormChangelogCommandSpec.groovy (98%)
 rename grails-data-hibernate7/dbmigration/src/test/groovy/org/{grails/plugins/databasemigration/command => apache/grails/data/hibernate7/dbmigration/cli}/DbmGormDiffCommandSpec.groovy (97%)
 rename {grails-data-hibernate5/dbmigration/src/test/groovy/org/grails/plugins/databasemigration/command => grails-data-hibernate7/dbmigration/src/test/groovy/org/apache/grails/data/hibernate7/dbmigration/cli}/DbmListLocksCommandSpec.groovy (95%)
 rename {grails-data-hibernate5/dbmigration/src/test/groovy/org/grails/plugins/databasemigration/command => grails-data-hibernate7/dbmigration/src/test/groovy/org/apache/grails/data/hibernate7/dbmigration/cli}/DbmMarkNextChangesetRanCommandSpec.groovy (93%)
 rename {grails-data-hibernate5/dbmigration/src/test/groovy/org/grails/plugins/databasemigration/command => grails-data-hibernate7/dbmigration/src/test/groovy/org/apache/grails/data/hibernate7/dbmigration/cli}/DbmMarkNextChangesetRanSqlCommandSpec.groovy (95%)
 rename {grails-data-hibernate5/dbmigration/src/test/groovy/org/grails/plugins/databasemigration/command => grails-data-hibernate7/dbmigration/src/test/groovy/org/apache/grails/data/hibernate7/dbmigration/cli}/DbmPreviousChangesetSqlCommandSpec.groovy (97%)
 rename grails-data-hibernate7/dbmigration/src/test/groovy/org/{grails/plugins/databasemigration/command => apache/grails/data/hibernate7/dbmigration/cli}/DbmReleaseLocksCommandSpec.groovy (93%)
 rename {grails-data-hibernate5/dbmigration/src/test/groovy/org/grails/plugins/databasemigration/command => grails-data-hibernate7/dbmigration/src/test/groovy/org/apache/grails/data/hibernate7/dbmigration/cli}/DbmRollbackCommandSpec.groovy (97%)
 rename grails-data-hibernate7/dbmigration/src/test/groovy/org/{grails/plugins/databasemigration/command => apache/grails/data/hibernate7/dbmigration/cli}/DbmRollbackCountCommandSpec.groovy (97%)
 rename {grails-data-hibernate5/dbmigration/src/test/groovy/org/grails/plugins/databasemigration/command => grails-data-hibernate7/dbmigration/src/test/groovy/org/apache/grails/data/hibernate7/dbmigration/cli}/DbmRollbackCountSqlCommandSpec.groovy (97%)
 rename {grails-data-hibernate5/dbmigration/src/test/groovy/org/grails/plugins/databasemigration/command => grails-data-hibernate7/dbmigration/src/test/groovy/org/apache/grails/data/hibernate7/dbmigration/cli}/DbmRollbackSqlCommandSpec.groovy (97%)
 rename {grails-data-hibernate5/dbmigration/src/test/groovy/org/grails/plugins/databasemigration/command => grails-data-hibernate7/dbmigration/src/test/groovy/org/apache/grails/data/hibernate7/dbmigration/cli}/DbmRollbackToDateCommandSpec.groovy (97%)
 rename {grails-data-hibernate5/dbmigration/src/test/groovy/org/grails/plugins/databasemigration/command => grails-data-hibernate7/dbmigration/src/test/groovy/org/apache/grails/data/hibernate7/dbmigration/cli}/DbmRollbackToDateSqlCommandSpec.groovy (97%)
 rename {grails-data-hibernate5/dbmigration/src/test/groovy/org/grails/plugins/databasemigration/command => grails-data-hibernate7/dbmigration/src/test/groovy/org/apache/grails/data/hibernate7/dbmigration/cli}/DbmStatusCommandSpec.groovy (94%)
 rename grails-data-hibernate7/dbmigration/src/test/groovy/org/{grails/plugins/databasemigration/command => apache/grails/data/hibernate7/dbmigration/cli}/DbmUpdateCommandSpec.groovy (97%)
 rename grails-data-hibernate7/dbmigration/src/test/groovy/org/{grails/plugins/databasemigration/command => apache/grails/data/hibernate7/dbmigration/cli}/DbmUpdateCountCommandSpec.groovy (96%)
 rename {grails-data-hibernate5/dbmigration/src/test/groovy/org/grails/plugins/databasemigration/command => grails-data-hibernate7/dbmigration/src/test/groovy/org/apache/grails/data/hibernate7/dbmigration/cli}/DbmUpdateCountSqlCommandSpec.groovy (97%)
 rename grails-data-hibernate7/dbmigration/src/test/groovy/org/{grails/plugins/databasemigration/command => apache/grails/data/hibernate7/dbmigration/cli}/DbmUpdateSqlCommandSpec.groovy (98%)
 rename grails-data-hibernate7/dbmigration/src/test/groovy/org/{grails/plugins/databasemigration/command => apache/grails/data/hibernate7/dbmigration/cli}/DbmValidateCommandSpec.groovy (96%)
 rename {grails-data-hibernate5/dbmigration/src/test/groovy/org/grails/plugins/databasemigration/command => grails-data-hibernate7/dbmigration/src/test/groovy/org/apache/grails/data/hibernate7/dbmigration/cli}/ScriptDatabaseMigrationCommandSpec.groovy (97%)
 rename grails-data-hibernate7/grails-plugin/src/{main/groovy/grails/plugin/hibernate/commands => cli/groovy/org/apache/grails/data/hibernate7/cli}/SchemaExportCommand.groovy (95%)
 create mode 100644 grails-data-mongodb/core/src/test/groovy/org/grails/datastore/gorm/mongo/api/MongoStaticApiSpec.groovy
 create mode 100644 grails-data-simple/src/test/groovy/org/grails/datastore/mapping/simple/SimpleMapDatastoreSpec.groovy
 create mode 100644 grails-datamapping-core/src/test/groovy/grails/gorm/CriteriaBuilderSpec.groovy
 create mode 100644 grails-datamapping-core/src/test/groovy/grails/gorm/multitenancy/CurrentTenantHolderSpec.groovy
 create mode 100644 grails-datamapping-core/src/test/groovy/grails/gorm/multitenancy/TenantsSpec.groovy
 create mode 100644 grails-datamapping-core/src/test/groovy/grails/gorm/services/AbstractServiceImplementerCoverageSpec.groovy
 create mode 100644 grails-datamapping-core/src/test/groovy/grails/gorm/services/AbstractStringQueryImplementerCoverageSpec.groovy
 create mode 100644 grails-datamapping-core/src/test/groovy/grails/gorm/services/FindAllByImplementerCoverageSpec.groovy
 create mode 100644 grails-datamapping-core/src/test/groovy/grails/gorm/services/ServiceTransformationCoverageSpec.groovy
 create mode 100644 grails-datamapping-core/src/test/groovy/grails/gorm/transactions/GrailsTransactionTemplateSpec.groovy
 create mode 100644 grails-datamapping-core/src/test/groovy/org/grails/datastore/gorm/AbstractDatastoreApiSpec.groovy
 create mode 100644 grails-datamapping-core/src/test/groovy/org/grails/datastore/gorm/AbstractGormApiSpec.groovy
 create mode 100644 grails-datamapping-core/src/test/groovy/org/grails/datastore/gorm/ConnectionSourceNameResolverSpec.groovy
 create mode 100644 grails-datamapping-core/src/test/groovy/org/grails/datastore/gorm/GormApiResolverSpec.groovy
 create mode 100644 grails-datamapping-core/src/test/groovy/org/grails/datastore/gorm/GormEnhancerCoverageSpec.groovy
 create mode 100644 grails-datamapping-core/src/test/groovy/org/grails/datastore/gorm/GormInstanceApiRegistrySpec.groovy
 create mode 100644 grails-datamapping-core/src/test/groovy/org/grails/datastore/gorm/GormInstanceApiSpec.groovy
 create mode 100644 grails-datamapping-core/src/test/groovy/org/grails/datastore/gorm/GormRegistryCoverageSpec.groovy
 create mode 100644 grails-datamapping-core/src/test/groovy/org/grails/datastore/gorm/GormStaticApiRegistrySpec.groovy
 create mode 100644 grails-datamapping-core/src/test/groovy/org/grails/datastore/gorm/GormStaticApiSpec.groovy
 create mode 100644 grails-datamapping-core/src/test/groovy/org/grails/datastore/gorm/GormValidationApiCoverageSpec.groovy
 create mode 100644 grails-datamapping-core/src/test/groovy/org/grails/datastore/gorm/GormValidationApiRegistrySpec.groovy
 create mode 100644 grails-datamapping-core/src/test/groovy/org/grails/datastore/gorm/finders/AbstractFinderSpec.groovy
 create mode 100644 grails-datamapping-core/src/test/groovy/org/grails/datastore/gorm/finders/DynamicFinderCoverageSpec.groovy
 create mode 100644 grails-datamapping-core/src/test/groovy/org/grails/datastore/gorm/finders/FindOrSaveByFinderSpec.groovy
 create mode 100644 grails-datamapping-core/src/test/groovy/org/grails/datastore/gorm/multitenancy/MultiTenantEventListenerSpec.groovy
 create mode 100644 grails-datamapping-core/src/test/groovy/org/grails/datastore/gorm/multitenancy/TenantDelegatingGormOperationsSpec.groovy
 create mode 100644 grails-datamapping-core/src/test/groovy/org/grails/datastore/gorm/query/transform/WhereQueryClosureCaptureSpec.groovy
 create mode 100644 grails-datamapping-core/src/test/groovy/org/grails/datastore/gorm/query/transform/WhereQueryEmbeddedBlockTransformSpec.groovy
 create mode 100644 grails-datamapping-core/src/test/groovy/org/grails/datastore/gorm/services/DefaultTenantServiceSpec.groovy
 create mode 100644 grails-datamapping-core/src/test/groovy/org/grails/datastore/gorm/services/DefaultTransactionServiceSpec.groovy
 create mode 100644 grails-datamapping-core/src/test/groovy/org/grails/datastore/gorm/transactions/DefaultTransactionTemplateFactorySpec.groovy
 create mode 100644 grails-datamapping-tck/src/main/groovy/org/apache/grails/data/testing/tck/domains/ExternalRef.groovy
 create mode 100644 grails-datamapping-tck/src/main/groovy/org/apache/grails/data/testing/tck/domains/SystemManaged.groovy
 create mode 100644 grails-datamapping-tck/src/main/groovy/org/apache/grails/data/testing/tck/domains/WorkItem.groovy
 create mode 100644 grails-datamapping-tck/src/main/groovy/org/apache/grails/data/testing/tck/domains/WorkItemGroup.groovy
 create mode 100644 grails-datamapping-tck/src/main/groovy/org/apache/grails/data/testing/tck/domains/WqAuthor.groovy
 create mode 100644 grails-datamapping-tck/src/main/groovy/org/apache/grails/data/testing/tck/domains/WqBiAuthor.groovy
 create mode 100644 grails-datamapping-tck/src/main/groovy/org/apache/grails/data/testing/tck/domains/WqBiBook.groovy
 create mode 100644 grails-datamapping-tck/src/main/groovy/org/apache/grails/data/testing/tck/domains/WqBookAuthor.groovy
 create mode 100644 grails-datamapping-tck/src/main/groovy/org/apache/grails/data/testing/tck/domains/WqBookItem.groovy
 create mode 100644 grails-datamapping-tck/src/main/groovy/org/apache/grails/data/testing/tck/domains/WqFoo.groovy
 create mode 100644 grails-datamapping-tck/src/main/groovy/org/apache/grails/data/testing/tck/domains/WqGroupedItem.groovy
 create mode 100644 grails-datamapping-tck/src/main/groovy/org/apache/grails/data/testing/tck/domains/WqPhrase.groovy
 create mode 100644 grails-datamapping-tck/src/main/groovy/org/apache/grails/data/testing/tck/domains/WqRole.groovy
 create mode 100644 grails-datamapping-tck/src/main/groovy/org/apache/grails/data/testing/tck/domains/WqRoleUser.groovy
 create mode 100644 grails-datamapping-tck/src/main/groovy/org/apache/grails/data/testing/tck/domains/WqScientificBook.groovy
 create mode 100644 grails-datamapping-tck/src/main/groovy/org/apache/grails/data/testing/tck/domains/WqSentence.groovy
 create mode 100644 grails-datamapping-tck/src/main/groovy/org/apache/grails/data/testing/tck/domains/WqStudent.groovy
 create mode 100644 grails-datamapping-tck/src/main/groovy/org/apache/grails/data/testing/tck/domains/WqThing.groovy
 create mode 100644 grails-datamapping-tck/src/main/groovy/org/apache/grails/data/testing/tck/domains/WqUserRole.groovy
 create mode 100644 grails-datamapping-tck/src/main/groovy/org/apache/grails/data/testing/tck/domains/WqWord.groovy
 create mode 100644 grails-datamapping-tck/src/main/groovy/org/apache/grails/data/testing/tck/tests/WhereQueryEmbeddedSpec.groovy
 create mode 100644 grails-datamapping-tck/src/main/groovy/org/apache/grails/data/testing/tck/tests/WhereQueryIssueVerificationSpec.groovy
 create mode 100644 grails-datamapping-tck/src/main/groovy/org/apache/grails/data/testing/tck/tests/WhereQueryLeftJoinSpec.groovy
 create mode 100644 grails-datasource/src/main/groovy/org/grails/plugins/datasource/DataSourceBeanDefinitionsPostProcessor.groovy
 create mode 100644 grails-domain-class/src/test/groovy/org/grails/plugins/domain/DomainClassGrailsPluginSpec.groovy
 create mode 100644 grails-events/plugin/src/test/groovy/org/grails/plugins/events/EventBusGrailsPluginSpec.groovy
 create mode 100644 grails-fields/src/test/groovy/grails/plugin/formfields/FieldsGrailsPluginSpec.groovy
 rename grails-data-hibernate5/dbmigration/grails-app/commands/org/grails/plugins/databasemigration/command/DbmValidateCommand.groovy => grails-forge/gradle/groovy-version-pin.gradle (63%)
 copy grails-test-examples/scaffolding/src/integrationTest/groovy/com/example/pages/LogoutPage.groovy => grails-forge/grails-forge-core/src/main/java/org/grails/forge/build/gradle/MavenLocalRepository.java (66%)
 copy grails-forge/grails-forge-core/src/main/java/org/grails/forge/feature/database/{HibernateGorm.java => GrailsDataHibernate5.java} (81%)
 rename grails-forge/grails-forge-core/src/main/java/org/grails/forge/feature/database/{HibernateGorm.java => GrailsDataHibernate7.java} (78%)
 rename grails-forge/grails-forge-core/src/main/java/org/grails/forge/feature/{grails/GrailsConsole.java => database/GrailsDataHibernateValidator.java} (50%)
 rename grails-forge/grails-forge-core/src/main/java/org/grails/forge/feature/database/{MongoGorm.java => GrailsDataMongoDB.java} (90%)
 create mode 100644 grails-forge/grails-forge-core/src/main/java/org/grails/forge/feature/security/GrailsSpringSecurity.java
 create mode 100644 grails-forge/grails-forge-core/src/main/java/org/grails/forge/feature/security/GrailsSpringSecurityUi.java
 rename grails-data-hibernate5/dbmigration/grails-app/commands/org/grails/plugins/databasemigration/command/DbmUpdateCommand.groovy => grails-forge/grails-forge-core/src/main/java/org/grails/forge/feature/security/PrimarySecurityFeature.java (59%)
 create mode 100644 grails-forge/grails-forge-core/src/main/java/org/grails/forge/feature/security/SecurityFeature.java
 create mode 100644 grails-forge/grails-forge-core/src/main/java/org/grails/forge/feature/security/SpringBootStarterSecurity.java
 copy grails-forge/grails-forge-core/src/main/java/org/grails/forge/feature/{lang/groovy/bootStrap.rocker.raw => security/template/role.rocker.raw} (61%)
 create mode 100644 grails-forge/grails-forge-core/src/main/java/org/grails/forge/feature/security/template/securityApplicationGroovy.rocker.raw
 create mode 100644 grails-forge/grails-forge-core/src/main/java/org/grails/forge/feature/security/template/securityConfig.rocker.raw
 copy grails-forge/grails-forge-core/src/main/java/org/grails/forge/feature/{lang/groovy/bootStrap.rocker.raw => security/template/user.rocker.raw} (53%)
 create mode 100644 grails-forge/grails-forge-core/src/main/java/org/grails/forge/feature/security/template/userClassic.rocker.raw
 copy grails-forge/grails-forge-core/src/main/java/org/grails/forge/feature/{lang/groovy/bootStrap.rocker.raw => security/template/userClassicService.rocker.raw} (87%)
 copy grails-forge/grails-forge-core/src/main/java/org/grails/forge/feature/{lang/groovy/bootStrap.rocker.raw => security/template/userClassicSpec.rocker.raw} (54%)
 copy grails-forge/grails-forge-core/src/main/java/org/grails/forge/feature/{lang/groovy/bootStrap.rocker.raw => security/template/userController.rocker.raw} (80%)
 create mode 100644 grails-forge/grails-forge-core/src/main/java/org/grails/forge/feature/security/template/userRole.rocker.raw
 copy grails-forge/grails-forge-core/src/main/java/org/grails/forge/feature/{lang/groovy/bootStrap.rocker.raw => security/template/userService.rocker.raw} (56%)
 copy grails-forge/grails-forge-core/src/main/java/org/grails/forge/feature/{lang/groovy/bootStrap.rocker.raw => security/template/userSpec.rocker.raw} (60%)
 create mode 100644 grails-forge/grails-forge-core/src/main/java/org/grails/forge/options/GormImplTypeConverter.java
 create mode 100644 grails-forge/grails-forge-core/src/main/resources/i18n/messages_zh_TW.properties
 create mode 100644 grails-forge/grails-forge-core/src/test/groovy/org/grails/forge/build/gradle/GradleRepositorySpec.groovy
 rename grails-forge/grails-forge-core/src/test/groovy/org/grails/forge/feature/database/{HibernateGormSpec.groovy => GrailsDataHibernate5Spec.groovy} (97%)
 create mode 100644 grails-forge/grails-forge-core/src/test/groovy/org/grails/forge/feature/database/GrailsDataHibernate7Spec.groovy
 rename grails-forge/grails-forge-core/src/test/groovy/org/grails/forge/feature/database/{MongoGormSpec.groovy => GrailsDataMongoDBSpec.groovy} (59%)
 create mode 100644 grails-forge/grails-forge-core/src/test/groovy/org/grails/forge/feature/security/GrailsSpringSecuritySpec.groovy
 create mode 100644 grails-forge/grails-forge-core/src/test/groovy/org/grails/forge/feature/security/GrailsSpringSecurityUiSpec.groovy
 create mode 100644 grails-forge/grails-forge-core/src/test/groovy/org/grails/forge/feature/security/SpringBootStarterSecuritySpec.groovy
 copy grails-forge/grails-forge-core/src/{main/java/org/grails/forge/options/GormImpl.java => test/groovy/org/grails/forge/options/GormImplSpec.groovy} (53%)
 create mode 100644 grails-gradle/plugins/src/main/groovy/org/grails/gradle/plugin/commands/CliArtifactExtension.groovy
 create mode 100644 grails-gradle/plugins/src/main/groovy/org/grails/gradle/plugin/commands/CliPublishingSupport.groovy
 create mode 100644 grails-gradle/plugins/src/main/groovy/org/grails/gradle/plugin/commands/GrailsCliArtifactGradlePlugin.groovy
 create mode 100644 grails-gradle/plugins/src/main/groovy/org/grails/gradle/plugin/commands/GrailsCliGradlePlugin.groovy
 create mode 100644 grails-gradle/plugins/src/main/groovy/org/grails/gradle/plugin/commands/GrailsCliLibraryGradlePlugin.groovy
 create mode 100644 grails-gradle/plugins/src/main/groovy/org/grails/gradle/plugin/util/ClasspathUtils.groovy
 create mode 100644 grails-gradle/plugins/src/test/groovy/org/grails/gradle/plugin/commands/CliAutoDiscoverySpec.groovy
 create mode 100644 grails-gradle/plugins/src/test/groovy/org/grails/gradle/plugin/commands/CliCompanionPublishingSpec.groovy
 create mode 100644 grails-gradle/plugins/src/test/groovy/org/grails/gradle/plugin/core/BomCliMultiprojectRaceFunctionalSpec.groovy
 create mode 100644 grails-gradle/plugins/src/test/groovy/org/grails/gradle/plugin/profiles/tasks/ProfileCompilerTaskSpec.groovy
 create mode 100644 grails-gradle/plugins/src/test/resources/test-projects/bom-cli-multiproject-race/consumer/build.gradle
 create mode 100644 grails-gradle/plugins/src/test/resources/test-projects/bom-cli-multiproject-race/maven-repo/org/apache/grails/race-bom/1.0-race/race-bom-1.0-race.pom
 create mode 100644 grails-gradle/plugins/src/test/resources/test-projects/bom-cli-multiproject-race/producer/build.gradle
 create mode 100644 grails-gradle/plugins/src/test/resources/test-projects/bom-cli-multiproject-race/settings.gradle
 create mode 100644 grails-gradle/plugins/src/test/resources/test-projects/cli-companion-autodiscovery/app/build.gradle
 create mode 100644 grails-gradle/plugins/src/test/resources/test-projects/cli-companion-autodiscovery/gradle.properties
 create mode 100644 grails-gradle/plugins/src/test/resources/test-projects/cli-companion-autodiscovery/my-plugin/build.gradle
 create mode 100644 grails-gradle/plugins/src/test/resources/test-projects/cli-companion-autodiscovery/my-plugin/src/cli/java/com/example/HelloWorldCommand.java
 create mode 100644 grails-gradle/plugins/src/test/resources/test-projects/cli-companion-autodiscovery/my-plugin/src/cli/resources/META-INF/grails-cli.factories
 create mode 100644 grails-gradle/plugins/src/test/resources/test-projects/cli-companion-autodiscovery/renamed-plugin/build.gradle
 create mode 100644 grails-gradle/plugins/src/test/resources/test-projects/cli-companion-autodiscovery/renamed-plugin/src/cli/java/com/acme/AcmeCommand.java
 create mode 100644 grails-gradle/plugins/src/test/resources/test-projects/cli-companion-autodiscovery/settings.gradle
 create mode 100644 grails-gradle/plugins/src/test/resources/test-projects/cli-companion-publishing/console-lib/build.gradle
 create mode 100644 grails-gradle/plugins/src/test/resources/test-projects/cli-companion-publishing/custom-owner/build.gradle
 create mode 100644 grails-gradle/plugins/src/test/resources/test-projects/cli-companion-publishing/gradle.properties
 create mode 100644 grails-gradle/plugins/src/test/resources/test-projects/cli-companion-publishing/owner/build.gradle
 create mode 100644 grails-gradle/plugins/src/test/resources/test-projects/cli-companion-publishing/plugin-a/build.gradle
 create mode 100644 grails-gradle/plugins/src/test/resources/test-projects/cli-companion-publishing/plugin-b/build.gradle
 create mode 100644 grails-gradle/plugins/src/test/resources/test-projects/cli-companion-publishing/resolver/build.gradle
 create mode 100644 grails-gradle/plugins/src/test/resources/test-projects/cli-companion-publishing/settings.gradle
 create mode 100644 grails-gsp/grails-layout/src/test/groovy/org/apache/grails/web/layout/LayoutGrailsPluginSpec.groovy
 rename grails-gsp/grails-sitemesh3/src/main/{java/org/grails/plugins/sitemesh3/GrailsSiteMeshViewResolverBeanPostProcessor.java => groovy/org/grails/plugins/sitemesh3/GrailsSiteMeshViewResolverBeanPostProcessor.groovy} (55%)
 create mode 100644 grails-gsp/grails-sitemesh3/src/main/groovy/org/grails/plugins/sitemesh3/Sitemesh3AutoConfiguration.groovy
 create mode 100644 grails-gsp/grails-sitemesh3/src/main/groovy/org/grails/plugins/sitemesh3/Sitemesh3EnvironmentPostProcessor.groovy
 create mode 100644 grails-gsp/grails-sitemesh3/src/main/groovy/org/grails/plugins/sitemesh3/Sitemesh3ViewResolverDefinitionPostProcessor.groovy
 delete mode 100644 grails-gsp/grails-sitemesh3/src/main/java/org/grails/plugins/sitemesh3/Sitemesh3AutoConfiguration.java
 create mode 100644 grails-gsp/grails-sitemesh3/src/main/resources/META-INF/spring.factories
 create mode 100644 grails-gsp/grails-sitemesh3/src/test/groovy/org/grails/plugins/sitemesh3/Sitemesh3EnvironmentPostProcessorSpec.groovy
 create mode 100644 grails-gsp/grails-sitemesh3/src/test/groovy/org/grails/plugins/sitemesh3/Sitemesh3ViewResolverDefinitionPostProcessorSpec.groovy
 create mode 100644 grails-gsp/plugin/src/test/groovy/org/grails/web/taglib/LocaleSelectAvailableSpec.groovy
 create mode 100644 grails-gsp/plugin/src/test/groovy/org/grails/web/taglib/LocaleSelectConfiguredDefaultSpec.groovy
 create mode 100644 grails-gsp/plugin/src/test/groovy/org/grails/web/taglib/LocaleSelectPinnedVariantSpec.groovy
 create mode 100644 grails-gsp/plugin/src/test/groovy/org/grails/web/taglib/LocaleSelectRenderingSpec.groovy
 create mode 100644 grails-i18n/src/main/groovy/org/grails/plugins/i18n/AvailableLocaleResolver.java
 create mode 100644 grails-i18n/src/test/groovy/org/grails/plugins/i18n/AvailableLocaleResolverSpec.groovy
 create mode 100644 grails-i18n/src/test/groovy/org/grails/plugins/i18n/I18nGrailsPluginSpec.groovy
 create mode 100644 grails-i18n/src/test/resources/bogus-plugin_zz.properties
 create mode 100644 grails-i18n/src/test/resources/messages.properties
 create mode 100644 grails-i18n/src/test/resources/messages_.properties
 create mode 100644 grails-i18n/src/test/resources/messages_cs.properties
 create mode 100644 grails-i18n/src/test/resources/messages_es.properties
 create mode 100644 grails-i18n/src/test/resources/messages_fr.properties
 create mode 100644 grails-i18n/src/test/resources/messages_pt_BR.properties
 create mode 100644 grails-i18n/src/test/resources/report_en_prod.properties
 create mode 100644 grails-i18n/src/test/resources/spring-security-core_zu.properties
 create mode 100644 grails-i18n/src/test/resources/standalone.properties
 create mode 100644 grails-interceptors/src/main/groovy/org/grails/plugins/web/interceptors/InterceptorBeanDefinitionsPostProcessor.groovy
 create mode 100644 grails-interceptors/src/test/groovy/org/grails/plugins/web/interceptors/InterceptorsGrailsPluginSpec.groovy
 create mode 100644 grails-profiles/base/skeleton/grails-app/i18n/messages_zh_TW.properties
 create mode 100644 grails-redis/src/main/groovy/grails/plugins/redis/RedisBeanDefinitionsPostProcessor.groovy
 create mode 100644 grails-redis/src/test/groovy/grails/plugins/redis/RedisBeanDefinitionsPostProcessorSpec.groovy
 create mode 100644 grails-rest-transforms/src/test/groovy/org/grails/plugins/web/rest/plugin/RestResponderGrailsPluginSpec.groovy
 rename grails-scaffolding/src/{main/groovy/grails/plugin/scaffolding => cli/groovy/org/apache/grails/scaffolding/cli}/CommandLineHelper.groovy (94%)
 rename grails-scaffolding/{grails-app/commands/scaffolding => src/cli/groovy/org/apache/grails/scaffolding/cli}/CreateScaffoldControllerCommand.groovy (94%)
 rename grails-scaffolding/{grails-app/commands/scaffolding => src/cli/groovy/org/apache/grails/scaffolding/cli}/CreateScaffoldServiceCommand.groovy (93%)
 rename grails-scaffolding/{grails-app/commands/scaffolding => src/cli/groovy/org/apache/grails/scaffolding/cli}/GenerateAllCommand.groovy (91%)
 rename grails-scaffolding/{grails-app/commands/scaffolding => src/cli/groovy/org/apache/grails/scaffolding/cli}/GenerateAsyncControllerCommand.groovy (94%)
 rename grails-scaffolding/{grails-app/commands/scaffolding => src/cli/groovy/org/apache/grails/scaffolding/cli}/GenerateControllerCommand.groovy (95%)
 rename grails-scaffolding/{grails-app/commands/scaffolding => src/cli/groovy/org/apache/grails/scaffolding/cli}/GenerateScaffoldAllCommand.groovy (95%)
 rename grails-scaffolding/{grails-app/commands/scaffolding => src/cli/groovy/org/apache/grails/scaffolding/cli}/GenerateServiceCommand.groovy (93%)
 rename grails-scaffolding/{grails-app/commands/scaffolding => src/cli/groovy/org/apache/grails/scaffolding/cli}/GenerateViewsCommand.groovy (94%)
 rename grails-scaffolding/{grails-app/commands/scaffolding => src/cli/groovy/org/apache/grails/scaffolding/cli}/InstallTemplatesCommand.groovy (93%)
 copy {grails-spring-security/plugin/grails-app/commands/grails.plugin.springsecurity => grails-scaffolding/src/cli/groovy/org/apache/grails/scaffolding/cli}/SkipBootstrap.groovy (95%)
 create mode 100644 grails-scaffolding/src/main/groovy/grails/plugin/scaffolding/ScaffoldingViewResolverDefinitionPostProcessor.groovy
 create mode 100644 grails-scaffolding/src/test/groovy/grails/plugin/scaffolding/ScaffoldingViewResolverDefinitionPostProcessorSpec.groovy
 create mode 100644 grails-services/src/main/groovy/org/grails/plugins/services/ServiceBeanDefinitionsPostProcessor.groovy
 create mode 100644 grails-services/src/test/groovy/org/grails/plugins/services/ServicesGrailsPluginSpec.groovy
 create mode 100644 grails-shell-cli/src/main/groovy/org/grails/cli/profile/GrailsRepositoryOverrides.groovy
 create mode 100644 grails-shell-cli/src/test/groovy/org/grails/cli/profile/GrailsRepositoryOverridesSpec.groovy
 rename grails-spring-security/oauth2/plugin/{grails-app/commands/grails/plugin/springsecurity/oauth2 => src/cli/groovy/org/apache/grails/security/oauth2/cli}/CommandLineHelper.groovy (95%)
 rename grails-spring-security/oauth2/plugin/{grails-app/commands/grails/plugin/springsecurity/oauth2 => src/cli/groovy/org/apache/grails/security/oauth2/cli}/InitOAuth2Command.groovy (97%)
 create mode 100644 grails-spring-security/plugin/grails-app/i18n/spring-security-core_cs.properties
 create mode 100644 grails-spring-security/plugin/grails-app/i18n/spring-security-core_da.properties
 create mode 100644 grails-spring-security/plugin/grails-app/i18n/spring-security-core_nl.properties
 create mode 100644 grails-spring-security/plugin/grails-app/i18n/spring-security-core_pl.properties
 create mode 100644 grails-spring-security/plugin/grails-app/i18n/spring-security-core_pt_PT.properties
 create mode 100644 grails-spring-security/plugin/grails-app/i18n/spring-security-core_sk.properties
 create mode 100644 grails-spring-security/plugin/grails-app/i18n/spring-security-core_th.properties
 create mode 100644 grails-spring-security/plugin/grails-app/i18n/spring-security-core_zh_CN.properties
 rename grails-spring-security/plugin/{grails-app/commands/grails.plugin.springsecurity => src/cli/groovy/org/apache/grails/security/cli}/CommandLineHelper.groovy (95%)
 rename grails-spring-security/plugin/{grails-app/commands/grails.plugin.springsecurity => src/cli/groovy/org/apache/grails/security/cli}/S2CreatePersistentTokenCommand.groovy (95%)
 rename grails-spring-security/plugin/{grails-app/commands/grails.plugin.springsecurity => src/cli/groovy/org/apache/grails/security/cli}/S2CreateRoleHierarchyEntryCommand.groovy (95%)
 rename grails-spring-security/plugin/{grails-app/commands/grails.plugin.springsecurity => src/cli/groovy/org/apache/grails/security/cli}/S2QuickstartCommand.groovy (99%)
 copy {grails-scaffolding/src/main/groovy/grails/plugin/scaffolding => grails-spring-security/plugin/src/cli/groovy/org/apache/grails/security/cli}/SkipBootstrap.groovy (95%)
 rename grails-spring-security/plugin/{grails-app/commands/grails.plugin.springsecurity/SkipBootstrap.groovy => src/test/groovy/grails/plugin/springsecurity/LogoutControllerSpec.groovy} (57%)
 delete mode 100644 grails-spring-security/ui/plugin/grails-app/assets/images/icons/error.svg
 delete mode 100644 grails-spring-security/ui/plugin/grails-app/assets/images/icons/info.svg
 delete mode 100644 grails-spring-security/ui/plugin/grails-app/assets/images/icons/role.svg
 delete mode 100644 grails-spring-security/ui/plugin/grails-app/assets/images/icons/user.svg
 delete mode 100644 grails-spring-security/ui/plugin/grails-app/assets/images/icons/users.svg
 delete mode 100644 grails-spring-security/ui/plugin/grails-app/assets/images/sort_asc.png
 delete mode 100644 grails-spring-security/ui/plugin/grails-app/assets/images/sort_asc_disabled.png
 delete mode 100644 grails-spring-security/ui/plugin/grails-app/assets/images/sort_both.png
 delete mode 100644 grails-spring-security/ui/plugin/grails-app/assets/images/sort_desc.png
 delete mode 100644 grails-spring-security/ui/plugin/grails-app/assets/images/sort_desc_disabled.png
 delete mode 100644 grails-spring-security/ui/plugin/grails-app/assets/javascripts/jquery/jquery.jdMenu.js
 delete mode 100644 grails-spring-security/ui/plugin/grails-app/assets/javascripts/jquery/jquery.positionBy.js
 delete mode 100644 grails-spring-security/ui/plugin/grails-app/assets/javascripts/spring-security-ui-register.js
 delete mode 100644 grails-spring-security/ui/plugin/grails-app/assets/stylesheets/elements/btn_left.gif
 delete mode 100644 grails-spring-security/ui/plugin/grails-app/assets/stylesheets/elements/btn_right.gif
 delete mode 100644 grails-spring-security/ui/plugin/grails-app/assets/stylesheets/elements/checkbox.gif
 delete mode 100644 grails-spring-security/ui/plugin/grails-app/assets/stylesheets/elements/input.gif
 delete mode 100644 grails-spring-security/ui/plugin/grails-app/assets/stylesheets/elements/input_left.gif
 delete mode 100644 grails-spring-security/ui/plugin/grails-app/assets/stylesheets/elements/input_right.gif
 delete mode 100644 grails-spring-security/ui/plugin/grails-app/assets/stylesheets/elements/radio.gif
 delete mode 100644 grails-spring-security/ui/plugin/grails-app/assets/stylesheets/elements/select_right.gif
 delete mode 100644 grails-spring-security/ui/plugin/grails-app/assets/stylesheets/gradient-alt.png
 delete mode 100644 grails-spring-security/ui/plugin/grails-app/assets/stylesheets/gradient-vertical.png
 delete mode 100644 grails-spring-security/ui/plugin/grails-app/assets/stylesheets/gradient.png
 delete mode 100644 grails-spring-security/ui/plugin/grails-app/assets/stylesheets/jquery.dataTables.css
 delete mode 100644 grails-spring-security/ui/plugin/grails-app/assets/stylesheets/jquery.jdMenu.css
 delete mode 100644 grails-spring-security/ui/plugin/grails-app/assets/stylesheets/jquery.jdMenu.slate.css
 delete mode 100644 grails-spring-security/ui/plugin/grails-app/assets/stylesheets/reset.css
 delete mode 100644 grails-spring-security/ui/plugin/grails-app/assets/stylesheets/spring-security-ui-auth.css
 delete mode 100644 grails-spring-security/ui/plugin/grails-app/assets/stylesheets/spring-security-ui-common.css
 delete mode 100644 grails-spring-security/ui/plugin/grails-app/assets/stylesheets/spring-security-ui-register.css
 delete mode 100644 grails-spring-security/ui/plugin/grails-app/assets/stylesheets/spring-security-ui.css
 create mode 100644 grails-spring-security/ui/plugin/src/test/groovy/grails/plugin/springsecurity/ui/SecurityUiTagLibSpec.groovy
 create mode 100644 grails-test-examples/external-configuration/src/integration-test/groovy/test/app/RelaxedPropertyResolutionSpec.groovy
 copy grails-test-examples/{plugins/loadafter => latency}/build.gradle (68%)
 create mode 100644 grails-test-examples/latency/grails-app/conf/application.yml
 copy grails-test-examples/{test-phases => latency}/grails-app/conf/logback.xml (100%)
 copy grails-core/src/main/groovy/grails/dev/commands/template/TemplateException.groovy => grails-test-examples/latency/grails-app/controllers/latencyapp/FastController.groovy (73%)
 rename grails-core/src/main/groovy/grails/dev/commands/template/TemplateException.groovy => grails-test-examples/latency/grails-app/controllers/latencyapp/SlowController.groovy (73%)
 copy grails-scaffolding/src/main/groovy/grails/plugin/scaffolding/SkipBootstrap.groovy => grails-test-examples/latency/grails-app/controllers/latencyapp/UrlMappings.groovy (83%)
 copy grails-scaffolding/src/main/groovy/grails/plugin/scaffolding/SkipBootstrap.groovy => grails-test-examples/latency/grails-app/init/latencyapp/Application.groovy (77%)
 create mode 100644 grails-test-examples/latency/src/integration-test/groovy/latencyapp/LatencyFunctionalSpec.groovy
 delete mode 100644 grails-test-examples/spring-security/ui/extended/grails-app/assets/stylesheets/main.css
 delete mode 100644 grails-test-examples/spring-security/ui/extended/grails-app/views/includes/_ajaxLogin.gsp
 delete mode 100644 grails-test-examples/spring-security/ui/extended/grails-app/views/layouts/register.gsp
 delete mode 100644 grails-test-examples/spring-security/ui/extended/grails-app/views/layouts/springSecurityUI.gsp
 delete mode 100644 grails-test-examples/spring-security/ui/extended/grails-app/views/register/_forgotPasswordMail.gsp
 delete mode 100644 grails-test-examples/spring-security/ui/extended/grails-app/views/register/_verifyRegistrationMail.gsp
 delete mode 100644 grails-test-examples/spring-security/ui/extended/grails-app/views/register/forgotPassword.gsp
 delete mode 100644 grails-test-examples/spring-security/ui/extended/grails-app/views/register/register.gsp
 delete mode 100644 grails-test-examples/spring-security/ui/extended/grails-app/views/register/resetPassword.gsp
 delete mode 100644 grails-test-examples/spring-security/ui/extended/grails-app/views/register/securityQuestions.gsp
 delete mode 100644 grails-test-examples/spring-security/ui/extended/grails-app/views/role/create.gsp
 delete mode 100644 grails-test-examples/spring-security/ui/extended/grails-app/views/role/edit.gsp
 delete mode 100644 grails-test-examples/spring-security/ui/extended/grails-app/views/role/search.gsp
 delete mode 100644 grails-test-examples/spring-security/ui/extended/grails-app/views/user/create.gsp
 delete mode 100644 grails-test-examples/spring-security/ui/extended/grails-app/views/user/edit.gsp
 delete mode 100644 grails-test-examples/spring-security/ui/extended/grails-app/views/user/search.gsp
 delete mode 100644 grails-test-examples/spring-security/ui/simple/grails-app/assets/stylesheets/main.css
 delete mode 100644 grails-test-examples/spring-security/ui/simple/grails-app/views/includes/_ajaxLogin.gsp
 delete mode 100644 grails-test-examples/spring-security/ui/simple/grails-app/views/layouts/register.gsp
 delete mode 100644 grails-test-examples/spring-security/ui/simple/grails-app/views/layouts/springSecurityUI.gsp
 delete mode 100644 grails-test-examples/spring-security/ui/simple/grails-app/views/persistentLogin/edit.gsp
 delete mode 100644 grails-test-examples/spring-security/ui/simple/grails-app/views/persistentLogin/search.gsp
 delete mode 100644 grails-test-examples/spring-security/ui/simple/grails-app/views/register/_forgotPasswordMail.gsp
 delete mode 100644 grails-test-examples/spring-security/ui/simple/grails-app/views/register/_verifyRegistrationMail.gsp
 delete mode 100644 grails-test-examples/spring-security/ui/simple/grails-app/views/register/forgotPassword.gsp
 delete mode 100644 grails-test-examples/spring-security/ui/simple/grails-app/views/register/register.gsp
 delete mode 100644 grails-test-examples/spring-security/ui/simple/grails-app/views/register/resetPassword.gsp
 delete mode 100644 grails-test-examples/spring-security/ui/simple/grails-app/views/register/securityQuestions.gsp
 delete mode 100644 grails-test-examples/spring-security/ui/simple/grails-app/views/registrationCode/edit.gsp
 delete mode 100644 grails-test-examples/spring-security/ui/simple/grails-app/views/registrationCode/search.gsp
 delete mode 100644 grails-test-examples/spring-security/ui/simple/grails-app/views/requestmap/create.gsp
 delete mode 100644 grails-test-examples/spring-security/ui/simple/grails-app/views/requestmap/edit.gsp
 delete mode 100644 grails-test-examples/spring-security/ui/simple/grails-app/views/requestmap/search.gsp
 delete mode 100644 grails-test-examples/spring-security/ui/simple/grails-app/views/role/create.gsp
 delete mode 100644 grails-test-examples/spring-security/ui/simple/grails-app/views/role/edit.gsp
 delete mode 100644 grails-test-examples/spring-security/ui/simple/grails-app/views/role/search.gsp
 delete mode 100644 grails-test-examples/spring-security/ui/simple/grails-app/views/securityInfo/config.gsp
 delete mode 100644 grails-test-examples/spring-security/ui/simple/grails-app/views/securityInfo/currentAuth.gsp
 delete mode 100644 grails-test-examples/spring-security/ui/simple/grails-app/views/securityInfo/filterChains.gsp
 delete mode 100644 grails-test-examples/spring-security/ui/simple/grails-app/views/securityInfo/logoutHandlers.gsp
 delete mode 100644 grails-test-examples/spring-security/ui/simple/grails-app/views/securityInfo/mappings.gsp
 delete mode 100644 grails-test-examples/spring-security/ui/simple/grails-app/views/securityInfo/providers.gsp
 delete mode 100644 grails-test-examples/spring-security/ui/simple/grails-app/views/securityInfo/secureChannel.gsp
 delete mode 100644 grails-test-examples/spring-security/ui/simple/grails-app/views/securityInfo/usercache.gsp
 delete mode 100644 grails-test-examples/spring-security/ui/simple/grails-app/views/user/create.gsp
 delete mode 100644 grails-test-examples/spring-security/ui/simple/grails-app/views/user/edit.gsp
 delete mode 100644 grails-test-examples/spring-security/ui/simple/grails-app/views/user/search.gsp
 copy grails-scaffolding/src/main/groovy/grails/plugin/scaffolding/SkipBootstrap.groovy => grails-test-examples/test-phases/src/functional-test/groovy/testphases/pages/GreetingPage.groovy (77%)
 copy grails-test-examples/{cache => undertow}/build.gradle (75%)
 copy grails-test-examples/{jetty => undertow}/grails-app/assets/javascripts/application.js (100%)
 copy grails-test-examples/{jetty => undertow}/grails-app/assets/stylesheets/application.css (100%)
 create mode 100644 grails-test-examples/undertow/grails-app/conf/application.yml
 copy grails-test-examples/{jetty => undertow}/grails-app/conf/logback-spring.xml (100%)
 copy grails-test-examples/{app2 => undertow}/grails-app/conf/spring/resources.groovy (100%)
 rename grails-forge/grails-forge-core/src/test/groovy/org/grails/forge/feature/grails/GrailsConsoleSpec.groovy => grails-test-examples/undertow/grails-app/controllers/undertowapp/SessionController.groovy (63%)
 copy grails-scaffolding/src/main/groovy/grails/plugin/scaffolding/SkipBootstrap.groovy => grails-test-examples/undertow/grails-app/controllers/undertowapp/UrlMappings.groovy (76%)
 rename grails-spring-security/ui/plugin/src/main/groovy/grails/plugin/springsecurity/ui/Constants.groovy => grails-test-examples/undertow/grails-app/init/undertowapp/Application.groovy (74%)
 rename grails-spring-security/ui/plugin/grails-app/assets/stylesheets/jquery-ui.css => grails-test-examples/undertow/grails-app/init/undertowapp/BootStrap.groovy (90%)
 copy grails-spring-security/plugin/grails-app/views/login/denied.gsp => grails-test-examples/undertow/grails-app/views/error.gsp (78%)
 rename grails-test-examples/{spring-security/ui/extended/grails-app/views/layouts/email.gsp => undertow/grails-app/views/index.gsp} (78%)
 copy grails-spring-security/plugin/grails-app/views/login/denied.gsp => grails-test-examples/undertow/grails-app/views/notFound.gsp (78%)
 rename grails-test-examples/{spring-security/ui/simple/grails-app/views/layouts/email.gsp => undertow/grails-app/views/session/index.gsp} (78%)
 rename grails-test-examples/{spring-security/ui/simple/grails-app/views/securityInfo/voters.gsp => undertow/grails-app/views/session/show.gsp} (77%)
 create mode 100644 grails-test-examples/undertow/src/integration-test/groovy/undertowapp/UndertowSessionSpec.groovy
 copy grails-scaffolding/src/main/groovy/grails/plugin/scaffolding/SkipBootstrap.groovy => grails-test-examples/undertow/src/integration-test/groovy/undertowapp/pages/SessionFormPage.groovy (75%)
 rename grails-scaffolding/src/main/groovy/grails/plugin/scaffolding/SkipBootstrap.groovy => grails-test-examples/undertow/src/integration-test/groovy/undertowapp/pages/SessionShowPage.groovy (78%)
 create mode 100644 grails-testing-support-core/src/test/groovy/org/grails/testing/DefineBeansPluginHooksSpec.groovy
 copy {grails-services => grails-testing-support-latency}/build.gradle (63%)
 create mode 100644 grails-testing-support-latency/src/main/groovy/org/apache/grails/testing/latency/LatencyAutoConfiguration.groovy
 create mode 100644 grails-testing-support-latency/src/main/groovy/org/apache/grails/testing/latency/LatencyFilter.groovy
 create mode 100644 grails-testing-support-latency/src/main/groovy/org/apache/grails/testing/latency/LatencyProperties.groovy
 create mode 100644 grails-testing-support-latency/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
 create mode 100644 grails-testing-support-latency/src/test/groovy/org/apache/grails/testing/latency/LatencyAutoConfigurationSpec.groovy
 create mode 100644 grails-testing-support-latency/src/test/groovy/org/apache/grails/testing/latency/LatencyFilterSpec.groovy
 create mode 100644 grails-undertow/plugin/build.gradle
 rename grails-core/src/main/groovy/grails/dev/commands/ExecutionContext.groovy => grails-undertow/plugin/src/main/groovy/org/apache/grails/undertow/plugin/UndertowGrailsPlugin.groovy (54%)
 create mode 100644 grails-undertow/plugin/src/test/groovy/org/apache/grails/undertow/plugin/UndertowGrailsPluginSpec.groovy
 create mode 100644 grails-undertow/spring-boot/build.gradle
 create mode 100644 grails-undertow/spring-boot/src/main/java/org/apache/grails/undertow/core/AccessLogHttpHandlerFactory.java
 create mode 100644 grails-undertow/spring-boot/src/main/java/org/apache/grails/undertow/core/CompressionHttpHandlerFactory.java
 create mode 100644 grails-undertow/spring-boot/src/main/java/org/apache/grails/undertow/core/ConfigurableUndertowWebServerFactory.java
 create mode 100644 grails-undertow/spring-boot/src/main/java/org/apache/grails/undertow/core/HttpHandlerFactory.java
 create mode 100644 grails-undertow/spring-boot/src/main/java/org/apache/grails/undertow/core/SslBuilderCustomizer.java
 create mode 100644 grails-undertow/spring-boot/src/main/java/org/apache/grails/undertow/core/UndertowBuilderCustomizer.java
 create mode 100644 grails-undertow/spring-boot/src/main/java/org/apache/grails/undertow/core/UndertowWebServer.java
 create mode 100644 grails-undertow/spring-boot/src/main/java/org/apache/grails/undertow/core/UndertowWebServerFactory.java
 create mode 100644 grails-undertow/spring-boot/src/main/java/org/apache/grails/undertow/core/autoconfigure/UndertowServerProperties.java
 create mode 100644 grails-undertow/spring-boot/src/main/java/org/apache/grails/undertow/core/autoconfigure/UndertowWebServerConfiguration.java
 create mode 100644 grails-undertow/spring-boot/src/main/java/org/apache/grails/undertow/core/autoconfigure/UndertowWebServerFactoryCustomizer.java
 create mode 100644 grails-undertow/spring-boot/src/main/java/org/apache/grails/undertow/core/autoconfigure/actuate/web/server/UndertowAccessLogCustomizer.java
 create mode 100644 grails-undertow/spring-boot/src/main/java/org/apache/grails/undertow/core/autoconfigure/actuate/web/server/UndertowManagementServerProperties.java
 create mode 100644 grails-undertow/spring-boot/src/main/java/org/apache/grails/undertow/core/autoconfigure/actuate/web/server/UndertowReactiveManagementChildContextConfiguration.java
 create mode 100644 grails-undertow/spring-boot/src/main/java/org/apache/grails/undertow/core/autoconfigure/actuate/web/server/UndertowReactiveManagementContextAutoConfiguration.java
 create mode 100644 grails-undertow/spring-boot/src/main/java/org/apache/grails/undertow/core/autoconfigure/actuate/web/server/UndertowServletManagementChildContextConfiguration.java
 create mode 100644 grails-undertow/spring-boot/src/main/java/org/apache/grails/undertow/core/autoconfigure/actuate/web/server/UndertowServletManagementContextAutoConfiguration.java
 create mode 100644 grails-undertow/spring-boot/src/main/java/org/apache/grails/undertow/core/autoconfigure/actuate/web/server/package-info.java
 create mode 100644 grails-undertow/spring-boot/src/main/java/org/apache/grails/undertow/core/autoconfigure/package-info.java
 create mode 100644 grails-undertow/spring-boot/src/main/java/org/apache/grails/undertow/core/autoconfigure/reactive/UndertowReactiveWebServerAutoConfiguration.java
 create mode 100644 grails-undertow/spring-boot/src/main/java/org/apache/grails/undertow/core/autoconfigure/reactive/package-info.java
 create mode 100644 grails-undertow/spring-boot/src/main/java/org/apache/grails/undertow/core/autoconfigure/servlet/UndertowServletWebServerAutoConfiguration.java
 create mode 100644 grails-undertow/spring-boot/src/main/java/org/apache/grails/undertow/core/autoconfigure/servlet/UndertowServletWebServerFactoryCustomizer.java
 create mode 100644 grails-undertow/spring-boot/src/main/java/org/apache/grails/undertow/core/autoconfigure/servlet/WebSocketUndertowServletWebServerFactoryCustomizer.java
 create mode 100644 grails-undertow/spring-boot/src/main/java/org/apache/grails/undertow/core/autoconfigure/servlet/package-info.java
 create mode 100644 grails-undertow/spring-boot/src/main/java/org/apache/grails/undertow/core/package-info.java
 create mode 100644 grails-undertow/spring-boot/src/main/java/org/apache/grails/undertow/core/reactive/UndertowHeadersAdapter.java
 create mode 100644 grails-undertow/spring-boot/src/main/java/org/apache/grails/undertow/core/reactive/UndertowHttpHandlerAdapter.java
 create mode 100644 grails-undertow/spring-boot/src/main/java/org/apache/grails/undertow/core/reactive/UndertowReactiveWebServerFactory.java
 create mode 100644 grails-undertow/spring-boot/src/main/java/org/apache/grails/undertow/core/reactive/UndertowServerHttpRequest.java
 create mode 100644 grails-undertow/spring-boot/src/main/java/org/apache/grails/undertow/core/reactive/UndertowServerHttpResponse.java
 create mode 100644 grails-undertow/spring-boot/src/main/java/org/apache/grails/undertow/core/reactive/package-info.java
 create mode 100644 grails-undertow/spring-boot/src/main/java/org/apache/grails/undertow/core/servlet/CompositeResourceManager.java
 create mode 100644 grails-undertow/spring-boot/src/main/java/org/apache/grails/undertow/core/servlet/DeploymentManagerHttpHandlerFactory.java
 create mode 100644 grails-undertow/spring-boot/src/main/java/org/apache/grails/undertow/core/servlet/FileSessionPersistence.java
 create mode 100644 grails-undertow/spring-boot/src/main/java/org/apache/grails/undertow/core/servlet/JarResourceManager.java
 create mode 100644 grails-undertow/spring-boot/src/main/java/org/apache/grails/undertow/core/servlet/UndertowDeploymentInfoCustomizer.java
 create mode 100644 grails-undertow/spring-boot/src/main/java/org/apache/grails/undertow/core/servlet/UndertowServletWebServer.java
 create mode 100644 grails-undertow/spring-boot/src/main/java/org/apache/grails/undertow/core/servlet/UndertowServletWebServerFactory.java
 create mode 100644 grails-undertow/spring-boot/src/main/java/org/apache/grails/undertow/core/servlet/package-info.java
 create mode 100644 grails-undertow/spring-boot/src/main/resources/META-INF/NOTICE
 create mode 100644 grails-undertow/spring-boot/src/main/resources/META-INF/additional-spring-configuration-metadata.json
 create mode 100644 grails-undertow/spring-boot/src/main/resources/META-INF/spring/aot.factories
 create mode 100644 grails-undertow/spring-boot/src/main/resources/META-INF/spring/org.springframework.boot.actuate.autoconfigure.web.ManagementContextConfiguration.imports
 create mode 100644 grails-undertow/spring-boot/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
 create mode 100644 grails-undertow/spring-boot/src/test/java/org/apache/grails/undertow/core/UndertowAccess.java
 create mode 100644 grails-undertow/spring-boot/src/test/java/org/apache/grails/undertow/core/UndertowWebServerRuntimeHintsTests.java
 create mode 100644 grails-undertow/spring-boot/src/test/java/org/apache/grails/undertow/core/autoconfigure/UndertowServerPropertiesTests.java
 create mode 100644 grails-undertow/spring-boot/src/test/java/org/apache/grails/undertow/core/autoconfigure/UndertowWebServerFactoryCustomizerTests.java
 create mode 100644 grails-undertow/spring-boot/src/test/java/org/apache/grails/undertow/core/autoconfigure/actuate/web/UndertowManagementServerPropertiesTests.java
 create mode 100644 grails-undertow/spring-boot/src/test/java/org/apache/grails/undertow/core/autoconfigure/reactive/UndertowReactiveWebServerAutoConfigurationTests.java
 create mode 100644 grails-undertow/spring-boot/src/test/java/org/apache/grails/undertow/core/autoconfigure/servlet/UndertowServletWebServerAutoConfigurationTests.java
 create mode 100644 grails-undertow/spring-boot/src/test/java/org/apache/grails/undertow/core/autoconfigure/servlet/UndertowServletWebServerFactoryCustomizerTests.java
 create mode 100644 grails-undertow/spring-boot/src/test/java/org/apache/grails/undertow/core/autoconfigure/servlet/UndertowServletWebServerServletContextListenerTests.java
 create mode 100644 grails-undertow/spring-boot/src/test/java/org/apache/grails/undertow/core/reactive/UndertowReactiveWebServerFactoryTests.java
 create mode 100644 grails-undertow/spring-boot/src/test/java/org/apache/grails/undertow/core/servlet/FileSessionPersistenceTests.java
 create mode 100644 grails-undertow/spring-boot/src/test/java/org/apache/grails/undertow/core/servlet/JarResourceManagerTests.java
 create mode 100644 grails-undertow/spring-boot/src/test/java/org/apache/grails/undertow/core/servlet/UndertowServletWebServerFactoryTests.java
 create mode 100644 grails-undertow/spring-boot/src/test/java/org/apache/grails/undertow/core/servlet/UndertowServletWebServerMvcIntegrationTests.java
 create mode 100644 grails-undertow/spring-boot/src/test/resources/org/apache/grails/undertow/core/servlet/restricted.jks
 create mode 100644 grails-undertow/spring-boot/src/test/resources/org/apache/grails/undertow/core/servlet/test.jks
 create mode 100644 grails-undertow/spring-boot/src/test/resources/org/apache/grails/undertow/core/test.jks
 create mode 100644 grails-url-mappings/src/main/groovy/org/grails/plugins/web/mapping/UrlMappingsBeanDefinitionsPostProcessor.groovy
 create mode 100644 grails-url-mappings/src/test/groovy/org/grails/plugins/web/mapping/UrlMappingsGrailsPluginSpec.groovy
 create mode 100644 grails-views-gson/src/test/groovy/grails/plugin/json/view/JsonViewGrailsPluginSpec.groovy
 create mode 100644 grails-views-markup/src/test/groovy/grails/plugin/markup/view/MarkupViewGrailsPluginSpec.groovy
 rename grails-web-url-mappings/src/{main/groovy/org/grails/web/mapping/reporting => cli/groovy/org/apache/grails/web/mapping/cli}/UrlMappingsReportCommand.groovy (89%)
 create mode 100644 grails-wrapper/src/test/groovy/grails/init/GrailsUpdaterSpec.groovy
 create mode 100644 grails-wrapper/src/test/groovy/grails/init/GrailsWrapperRepoSpec.groovy