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

jamesfredley pushed a commit to branch v7.0.7
in repository https://gitbox.apache.org/repos/asf/grails-core.git

commit 801c62882203e8151cfdc5bac8c644d6467fefa9
Merge: 45b4680c96 771d483924
Author: James Fredley <[email protected]>
AuthorDate: Sat Jan 31 22:49:39 2026 -0500

    Merge branch '7.0.x' into release-7.0.7-docs

 .agents/skills/grails-developer/SKILL.md           | 885 ++++++++++++++++++
 .agents/skills/groovy-developer/SKILL.md           | 521 +++++++++++
 .agents/skills/java-developer/SKILL.md             | 286 ++++++
 .claude/skills/grails-developer/SKILL.md           |   1 +
 .claude/skills/groovy-developer/SKILL.md           |   1 +
 .claude/skills/java-developer/SKILL.md             |   1 +
 .clinerules                                        |   1 +
 .cursorrules                                       |   1 +
 .github/workflows/gradle.yml                       |   2 +-
 .github/workflows/groovy-joint-workflow.yml        |   2 +-
 .github/workflows/publish-docs.yml                 |  67 ++
 .github/workflows/release.yml                      |   2 +-
 .windsurfrules                                     |   1 +
 AGENTS.md                                          | 260 ++++++
 CLAUDE.md                                          |   1 +
 GEMINI.md                                          |   1 +
 README.md                                          |   2 +-
 build-logic/settings.gradle                        |   2 +-
 etc/bin/verify.sh                                  |  46 +-
 grails-data-graphql/settings.gradle                |   2 +-
 grails-data-neo4j/settings.gradle                  |   4 +-
 grails-forge/settings.gradle                       |   2 +-
 grails-gradle/settings.gradle                      |   2 +-
 .../functionaltests/BookController.groovy          |  11 +-
 .../controllers/functionaltests/UrlMappings.groovy |  62 ++
 .../async/AsyncTestController.groovy               | 304 +++++++
 .../binding/AdvancedDataBindingController.groovy   | 306 +++++++
 .../caching/CacheTestController.groovy             | 131 +++
 .../codecs/CodecTestController.groovy              | 281 ++++++
 .../commanddi/CommandDIController.groovy           | 406 +++++++++
 .../contentneg/ContentNegotiationController.groovy | 168 ++++
 .../functionaltests/cors/CorsTestController.groovy | 113 +++
 .../ErrorHandlingTestController.groovy             | 215 +++++
 .../fileupload/FileUploadTestController.groovy     | 241 +++++
 .../functionaltests/flow/FlowController.groovy     | 245 +++++
 .../flow/FlowTargetController.groovy               |  52 ++
 .../functionaltests/i18n/I18nTestController.groovy | 226 +++++
 .../interceptors/ActionExcludeInterceptor.groovy}  |  25 +-
 .../interceptors/AdvancedMatchingController.groovy | 107 +++
 .../AttributeSettingInterceptor.groovy}            |  44 +-
 .../interceptors/BlockingInterceptor.groovy}       |  47 +-
 .../ConditionalMatchInterceptor.groovy             |  52 ++
 .../interceptors/FirstInterceptor.groovy}          |  38 +-
 .../HttpMethodMatchingInterceptor.groovy}          |  23 +-
 .../interceptors/InterceptorTestController.groovy  | 172 ++++
 .../interceptors/MultipleRulesInterceptor.groovy}  |  25 +-
 .../NamespaceMatchingInterceptor.groovy}           |  23 +-
 .../interceptors/SecondInterceptor.groovy}         |  38 +-
 .../interceptors/SessionInterceptor.groovy}        |  27 +-
 .../interceptors/ThirdInterceptor.groovy}          |  38 +-
 .../interceptors/TimingInterceptor.groovy}         |  44 +-
 .../RequestResponseTestController.groovy           | 270 ++++++
 .../springevents/SpringEventController.groovy      | 148 +++
 .../taglib/TagLibTestController.groovy             | 326 +++++++
 .../urlmappings/UrlMappingsTestController.groovy   | 167 ++++
 .../domain/functionaltests/binding/Address.groovy} |  26 +-
 .../functionaltests/binding/Contributor.groovy}    |  22 +-
 .../functionaltests/binding/Employee.groovy}       |  62 +-
 .../domain/functionaltests/binding/Project.groovy} |  25 +-
 .../domain/functionaltests/binding/Team.groovy}    |  23 +-
 .../functionaltests/binding/TeamMember.groovy}     |  25 +-
 .../functionaltests/constraints/Appointment.groovy | 109 +++
 .../functionaltests/constraints/PaymentInfo.groovy | 178 ++++
 .../functionaltests/constraints/Product.groovy     |  76 ++
 .../constraints/Registration.groovy                | 158 ++++
 .../functionaltests/events/AuditedEntity.groovy    | 108 +++
 .../functionaltests/events/StatefulEntity.groovy   |  81 ++
 .../functionaltests/events/VetoableEntity.groovy   |  67 ++
 .../domain/functionaltests/gorm/Author.groovy      |  62 ++
 .../domain/functionaltests/gorm/GormBook.groovy    |  70 ++
 .../functionaltests/services/InventoryItem.groovy} |  28 +-
 .../app1/grails-app/i18n/messages.properties       |   9 +
 .../app1/grails-app/i18n/messages_de.properties    |   9 +
 .../app1/grails-app/i18n/messages_fr.properties    |   9 +
 .../caching/CacheTestService.groovy                | 133 +++
 .../commanddi/NotificationService.groovy           |  88 ++
 .../commanddi/PricingService.groovy                |  77 ++
 .../commanddi/ValidationHelperService.groovy       |  80 ++
 .../services/AsyncProcessingService.groovy         | 122 +++
 .../services/InventoryService.groovy               | 204 +++++
 .../functionaltests/services/OrderService.groovy   | 118 +++
 .../springevents/EventListenerService.groovy       | 169 ++++
 .../springevents/EventPublisherService.groovy      |  78 ++
 .../functionaltests/taglib/CustomTagLib.groovy     | 341 +++++++
 .../grails-app/views/contentNegotiation/error.gsp  |  29 +
 .../grails-app/views/contentNegotiation/index.gsp  |  34 +
 .../views/tagLibTest/_simpleTemplate.gsp           |  19 +
 .../grails-app/views/tagLibTest/testAlertTag.gsp   |  20 +
 .../grails-app/views/tagLibTest/testAppInfoTag.gsp |  20 +
 .../grails-app/views/tagLibTest/testBadgeTag.gsp   |  20 +
 .../views/tagLibTest/testBuiltInCheckBox.gsp       |  20 +
 .../views/tagLibTest/testBuiltInCollect.gsp        |  20 +
 .../views/tagLibTest/testBuiltInCookie.gsp         |  20 +
 .../views/tagLibTest/testBuiltInCreateLink.gsp     |  21 +
 .../views/tagLibTest/testBuiltInEach.gsp           |  21 +
 .../views/tagLibTest/testBuiltInFieldValue.gsp     |  20 +
 .../views/tagLibTest/testBuiltInFindAll.gsp        |  20 +
 .../views/tagLibTest/testBuiltInForm.gsp           |  23 +
 .../views/tagLibTest/testBuiltInFormatDate.gsp     |  21 +
 .../views/tagLibTest/testBuiltInFormatNumber.gsp   |  21 +
 .../views/tagLibTest/testBuiltInHeader.gsp         |  20 +
 .../views/tagLibTest/testBuiltInHiddenField.gsp    |  20 +
 .../grails-app/views/tagLibTest/testBuiltInIf.gsp  |  24 +
 .../views/tagLibTest/testBuiltInInclude.gsp        |  20 +
 .../views/tagLibTest/testBuiltInJoin.gsp           |  20 +
 .../views/tagLibTest/testBuiltInLink.gsp           |  22 +
 .../views/tagLibTest/testBuiltInMessage.gsp        |  20 +
 .../views/tagLibTest/testBuiltInPaginate.gsp       |  20 +
 .../views/tagLibTest/testBuiltInPasswordField.gsp  |  20 +
 .../views/tagLibTest/testBuiltInRadio.gsp          |  22 +
 .../views/tagLibTest/testBuiltInRender.gsp         |  20 +
 .../views/tagLibTest/testBuiltInResource.gsp       |  20 +
 .../views/tagLibTest/testBuiltInSelect.gsp         |  20 +
 .../grails-app/views/tagLibTest/testBuiltInSet.gsp |  23 +
 .../views/tagLibTest/testBuiltInSortableColumn.gsp |  26 +
 .../views/tagLibTest/testBuiltInTextArea.gsp       |  20 +
 .../views/tagLibTest/testBuiltInTextField.gsp      |  20 +
 .../views/tagLibTest/testBuiltInUploadForm.gsp     |  23 +
 .../views/tagLibTest/testBuiltInWhile.gsp          |  21 +
 .../views/tagLibTest/testConditionalTags.gsp       |  21 +
 .../views/tagLibTest/testCssClassTag.gsp           |  20 +
 .../views/tagLibTest/testDefinitionListTag.gsp     |  20 +
 .../views/tagLibTest/testEncodingTags.gsp          |  22 +
 .../views/tagLibTest/testFormattedTag.gsp          |  20 +
 .../grails-app/views/tagLibTest/testHelloTag.gsp   |  20 +
 .../grails-app/views/tagLibTest/testIterateTag.gsp |  20 +
 .../grails-app/views/tagLibTest/testJoinTag.gsp    |  20 +
 .../grails-app/views/tagLibTest/testListTag.gsp    |  20 +
 .../grails-app/views/tagLibTest/testNestedTags.gsp |  22 +
 .../grails-app/views/tagLibTest/testPanelTag.gsp   |  20 +
 .../views/tagLibTest/testProgressTag.gsp           |  20 +
 .../grails-app/views/tagLibTest/testRawTag.gsp     |  20 +
 .../grails-app/views/tagLibTest/testRepeatTag.gsp  |  20 +
 .../views/tagLibTest/testRequestInfoTag.gsp        |  20 +
 .../views/tagLibTest/testSessionValueTag.gsp       |  20 +
 .../grails-app/views/tagLibTest/testSetVarTag.gsp  |  20 +
 .../views/tagLibTest/testTagsWithModel.gsp         |  26 +
 .../grails-app/views/tagLibTest/testWrapperTag.gsp |  20 +
 .../functionaltests/async/AsyncPromiseSpec.groovy  | 395 ++++++++
 .../binding/AdvancedDataBindingSpec.groovy         | 451 ++++++++++
 .../functionaltests/caching/CachingSpec.groovy     | 406 +++++++++
 .../codecs/SecurityCodecsSpec.groovy               | 423 +++++++++
 .../commanddi/CommandObjectDISpec.groovy           | 386 ++++++++
 .../constraints/ConstraintValidationSpec.groovy    | 996 +++++++++++++++++++++
 .../contentneg/ContentNegotiationSpec.groovy       | 411 +++++++++
 .../functionaltests/cors/CorsAdvancedSpec.groovy   | 301 +++++++
 .../errorhandling/ErrorHandlingSpec.groovy         | 217 +++++
 .../functionaltests/events/DomainEventsSpec.groovy | 574 ++++++++++++
 .../fileupload/FileUploadSpec.groovy               | 395 ++++++++
 .../flow/FlashChainForwardSpec.groovy              | 338 +++++++
 .../functionaltests/gorm/GormAdvancedSpec.groovy   | 719 +++++++++++++++
 .../i18n/InternationalizationSpec.groovy           | 445 +++++++++
 .../InterceptorAdvancedMatchingSpec.groovy         | 275 ++++++
 .../interceptors/InterceptorOrderingSpec.groovy    | 315 +++++++
 .../requestresponse/RequestResponseSpec.groovy     | 386 ++++++++
 .../services/ServiceIntegrationSpec.groovy         | 379 ++++++++
 .../springevents/SpringEventsSpec.groovy           | 333 +++++++
 .../functionaltests/taglib/TagLibSpec.groovy       | 968 ++++++++++++++++++++
 .../urlmappings/UrlMappingsSpec.groovy             | 352 ++++++++
 .../springevents/CustomApplicationEvent.groovy}    |  26 +-
 .../springevents/PriorityEvent.groovy}             |  24 +-
 .../springevents/UserActionEvent.groovy}           |  26 +-
 .../functionaltests/BookControllerSpec.groovy      |  10 +-
 .../services/pubsub/demo/TotalService.groovy       |  12 +-
 .../groovy/pubsub/demo/AsyncEventsSpec.groovy      | 203 +++++
 .../groovy/pubsub/demo/PubSubSpec.groovy           |  37 +-
 .../main/groovy/pubsub/demo/BookSubscriber.groovy  |  16 +-
 grails-test-examples/cache/build.gradle            |   2 +
 .../com/demo/AdvancedCachingController.groovy      | 123 +++
 .../controllers/com/demo/UrlMappings.groovy        |  54 ++
 .../com/demo/AdvancedCachingService.groovy         | 158 ++++
 .../com/demo/AdvancedCachingIntegrationSpec.groovy | 323 +++++++
 .../com/demo/AdvancedCachingServiceSpec.groovy     | 316 +++++++
 .../CrossDatasourceTransactionSpec.groovy          | 284 ++++++
 .../functionaltests/DatasourceSwitchingSpec.groovy | 370 ++++++++
 .../functionaltests/MultipleDataSourcesSpec.groovy |  13 +-
 .../test/app/ConfigurationPrioritySpec.groovy      | 249 ++++++
 .../test/app/EnvironmentConfigurationSpec.groovy   | 223 +++++
 grails-test-examples/gorm/build.gradle             |   5 +-
 .../gorm/AuthorController.groovy}                  |  17 +-
 .../gorm/BookController.groovy}                    |  17 +-
 .../gorm/UrlMappings.groovy}                       |  18 +-
 .../grails-app/domain/gorm/AuditedEntity.groovy    | 148 +++
 .../domain/gorm/Author.groovy}                     |  39 +-
 .../gorm/grails-app/domain/gorm/Book.groovy        |  33 +-
 .../grails-app/i18n/messages.properties            |   1 +
 .../services/gorm/BookDataService.groovy           | 151 ++++
 .../services/gorm/TransactionTestService.groovy    | 187 ++++
 .../gorm/grails-app/views/error.gsp                |  48 +
 .../gorm/grails-app/views/index.gsp                |  32 +
 .../gorm/grails-app/views/notFound.gsp             |  28 +
 .../groovy/gorm/FieldsValidationSpec.groovy        | 552 ++++++++++++
 .../groovy/gorm/GormCascadeOperationsSpec.groovy   | 357 ++++++++
 .../groovy/gorm/GormCriteriaQueriesSpec.groovy     | 614 +++++++++++++
 .../groovy/gorm/GormDataServicesSpec.groovy        | 338 +++++++
 .../groovy/gorm/GormEventsSpec.groovy              | 377 ++++++++
 .../groovy/gorm/GormWhereQueryAdvancedSpec.groovy  | 373 ++++++++
 .../groovy/gorm/ScaffoldingFunctionalSpec.groovy   | 293 ++++++
 .../groovy/gorm/TransactionPropagationSpec.groovy  | 268 ++++++
 .../integration-test/groovy/gorm/UserSpec.groovy   |  33 +-
 .../groovy/gorm/ValidationConstraintsSpec.groovy   | 496 ++++++++++
 .../groovy/gorm/pages/AuthorPages.groovy           |  75 ++
 .../groovy/gorm/pages/BookPages.groovy             |  79 ++
 .../example/grails/layout/TagLibController.groovy  |  95 ++
 .../grails-app/views/tagLib/_partial.gsp           |  21 +
 .../grails-app/views/tagLib/collectTag.gsp         |  29 +
 .../grails-app/views/tagLib/createLinkTag.gsp      |  30 +
 .../gsp-layout/grails-app/views/tagLib/eachTag.gsp |  33 +
 .../gsp-layout/grails-app/views/tagLib/elseTag.gsp |  33 +
 .../grails-app/views/tagLib/encodeTags.gsp         |  30 +
 .../gsp-layout/grails-app/views/tagLib/formTag.gsp |  50 ++
 .../grails-app/views/tagLib/formatTags.gsp         |  30 +
 .../gsp-layout/grails-app/views/tagLib/ifTag.gsp   |  31 +
 .../gsp-layout/grails-app/views/tagLib/index.gsp   |  32 +
 .../gsp-layout/grails-app/views/tagLib/joinTag.gsp |  30 +
 .../gsp-layout/grails-app/views/tagLib/linkTag.gsp |  30 +
 .../grails-app/views/tagLib/renderTag.gsp          |  31 +
 .../gsp-layout/grails-app/views/tagLib/setTag.gsp  |  35 +
 .../integration-test/groovy/GspTagLibSpec.groovy   | 275 ++++++
 .../controllers/example/BookController.groovy      |   8 +-
 .../functional/tests/BookController.groovy         |   8 +-
 .../functional/tests/BookControllerUnitSpec.groovy |  10 +-
 .../controllers/example/BookController.groovy      |   8 +-
 .../schemapertenant/BookController.groovy          |   8 +-
 .../groovy/micronaut/MicronautContextSpec.groovy   |  92 ++
 .../groovy/micronaut/MicronautQualifierSpec.groovy | 106 +++
 .../functional/tests/BookController.groovy         |   8 +-
 .../examples/mongo/tenant/BookController.groovy    |   8 +-
 .../functional/tests/AuthorController.groovy       |   8 +-
 .../functional/tests/BookController.groovy         |   8 +-
 grails-test-examples/plugins/exploded/build.gradle |   3 +
 .../groovy/exploded/PluginDependencySpec.groovy    | 223 +++++
 .../plugins/loadfirst/build.gradle                 |   3 +
 .../groovy/loadfirst/PluginLifecycleSpec.groovy    | 236 +++++
 .../plugins/loadsecond/build.gradle                |   3 +
 .../groovy/loadsecond/PluginLoadOrderSpec.groovy   | 222 +++++
 .../{gorm => scaffolding-fields}/build.gradle      |  33 +-
 .../grails-app/conf/application.yml                | 106 +++
 .../scaffoldingfields/DepartmentController.groovy} |  20 +-
 .../scaffoldingfields/EmployeeController.groovy}   |  20 +-
 .../scaffoldingfields/ProjectController.groovy}    |  20 +-
 .../scaffoldingfields/UrlMappings.groovy}          |  20 +-
 .../domain/scaffoldingfields/Address.groovy}       |  26 +-
 .../domain/scaffoldingfields/Department.groovy}    |  22 +-
 .../domain/scaffoldingfields/Employee.groovy       | 129 +++
 .../domain/scaffoldingfields/Project.groovy}       |  47 +-
 .../grails-app/i18n/messages.properties            |   1 +
 .../init/scaffoldingfields/Application.groovy}     |  17 +-
 .../init/scaffoldingfields/BootStrap.groovy        | 114 +++
 .../grails-app/views/_fields/default/_wrapper.gsp  |  38 +
 .../views/_fields/employee/biography/_wrapper.gsp  |  38 +
 .../views/_fields/employee/email/_wrapper.gsp      |  39 +
 .../scaffoldingfields/CrudFunctionalSpec.groovy    | 269 ++++++
 .../scaffoldingfields/CustomTemplatesSpec.groovy   | 171 ++++
 .../groovy/scaffoldingfields/FieldTypesSpec.groovy | 250 ++++++
 .../groovy/scaffoldingfields/PaginationSpec.groovy | 502 +++++++++++
 .../RelationshipsFunctionalSpec.groovy             | 534 +++++++++++
 .../ValidationFunctionalSpec.groovy                | 861 ++++++++++++++++++
 .../scaffoldingfields/pages/DepartmentPages.groovy |  96 ++
 .../scaffoldingfields/pages/EmployeePages.groovy   | 139 +++
 .../scaffoldingfields/pages/ProjectPages.groovy    | 105 +++
 .../pages/ScaffoldCreatePage.groovy                | 147 +++
 .../pages/ScaffoldEditPage.groovy                  | 159 ++++
 .../pages/ScaffoldListPage.groovy                  | 112 +++
 .../pages/ScaffoldShowPage.groovy                  | 106 +++
 settings.gradle                                    |   4 +-
 266 files changed, 32071 insertions(+), 530 deletions(-)

Reply via email to