You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@grails.apache.org by ja...@apache.org on 2026/09/09 20:21:03 UTC
(grails-core) branch fix/interceptor-canonical-path updated (5c1f79d16c -> e0bba892e7)
This is an automated email from the ASF dual-hosted git repository.
jamesfredley pushed a change to branch fix/interceptor-canonical-path
in repository https://gitbox.apache.org/repos/asf/grails-core.git
from 5c1f79d16c Narrow the context-path interceptor note to the affected matcher shape
add 32b0d9f5a4 Discover the multipart request instead of substituting it
add 0709bf4f38 Cut unused helper and repeated javadoc from the multipart cleanup
add 959448b51b Resolve the request-scoped application attributes once per servlet context
add 5511f09507 Delegate handler chain assembly to Spring and stop reallocating interceptors
add ab68e688e9 Stop copying the servlet parameter map on every request
add ba29b546d4 Document the request processing behaviour changes in the 8.0 upgrade guide
add cc1cbac7bc Record the request-path benchmark baseline
add 6be65ebcbf Skip URL mapping candidates that cannot match before running their regex
add 4e8883474b Stop allocating a JDK proxy per interceptor phase per request
add f1267f616a Stop generating allowed-methods bookkeeping into every controller action
add 8ef9bbd7a9 Cache the data binding collaborators and the databinding whitelist lookup
add abc0316b0e Cache the per-request lookups in the redirect, render and domain binding paths
add 6b304783f9 Deprecate getCurrentRequest and call getRequest directly
add 78ff86793c Add benchmarks for the always-on request paths
add ae94719e30 Document the test impact of deprecating getCurrentRequest
add 1b758d9d54 Restore the locale context on include and forward dispatches too
add e972b2ca5f Merge remote-tracking branch 'upstream/8.0.x' into perf/request-path-8.0.x
add aaefad82fc Isolate the domain binding spec from discovery strategies left by other tests
add 8d315b7369 Fold the request-path benchmarks into grails-benchmarks
add 785d4e5f41 Take the cached collaborators out of the controller traits
add 180a6cbf6c Benchmark the redirect and render paths
add c4052b889e Merge remote-tracking branch 'upstream/8.0.x' into perf/request-path-8.0.x
add f42924db13 Merge remote-tracking branch 'upstream/8.0.x' into perf/request-path-8.0.x
add 104066fc7c Merge remote-tracking branch 'upstream/8.0.x' into perf/request-path-8.0.x
add 7e89323aa4 Merge remote-tracking branch 'upstream/8.0.x' into perf/request-path-8.0.x
add 62de237adb fix: let a data binding bean registered after a failed lookup be picked up
add 4c9d8d8a6b Resolve captured URL mapping names from the match, not the request
add 4b2ab93972 Document that captured URL mapping names come from the URI
add c8f89ab26d Use the guide's table syntax for the URL mapping upgrade note
add 8803bd697d Renumber the upgrade note to avoid colliding with the request-path branch
add 3af0db1d36 Merge remote-tracking branch 'upstream/8.0.x' into perf/urlmapping-name-resolution-8.0.x
add 4691e25b89 Merge remote-tracking branch 'upstream/8.0.x' into perf/urlmapping-name-resolution-8.0.x
add 5f8cc13bc9 Merge remote-tracking branch 'origin/perf/urlmapping-name-resolution-8.0.x' into perf/request-path-8.0.x
add 1beae2175d Let oversized uploads reach the application's error handling
add bb2a8b0492 Cover oversized uploads and multipart method overrides end to end
add 9b580c9ac9 Read every framework request parameter through one tolerant helper
add f145eb2f43 Stop an error handler that fails from being forwarded to forever
add fcb65f9879 Cover the oversized upload path on Tomcat, Jetty and Undertow
add 0b8473f6e4 Document what an oversized upload reaches, and where it does not
add df63cefae7 Merge remote-tracking branch 'origin/fix/multipart-lean-8.0.x' into perf/request-path-8.0.x
add af62583ac5 feat: move the hidden HTTP method override into the dispatcher when the filter is off
add 35780cdd18 feat: disable the hidden HTTP method filter by default
add a1ac13297c build(test): make the isolated test tasks actually run their tests
add 8579fd6107 Merge remote-tracking branch 'upstream/8.0.x' into feat/hiddenmethod-handler-mapping
add f9c7970759 Merge remote-tracking branch 'upstream/8.0.x' into feat/hiddenmethod-handler-mapping
add b7b744f9e4 fix: derive hidden method filter mode from both properties, and fill Boot's gap
add 7437632475 Merge remote-tracking branch 'upstream/8.0.x' into feat/hiddenmethod-handler-mapping
add 8152382a8b Merge remote-tracking branch 'upstream/8.0.x' into feat/hiddenmethod-handler-mapping
add 2ce995bb1f Merge remote-tracking branch 'origin/feat/hiddenmethod-handler-mapping' into feat/hiddenmethod-handler-mapping
add b1cb822960 Merge remote-tracking branch 'origin/feat/hiddenmethod-handler-mapping' into perf/request-path-8.0.x
add 3a4797dda4 Merge remote-tracking branch 'upstream/8.0.x' into perf/request-path-8.0.x
add 59eeda19cc docs: renumber this branch's upgrade sections after the 8.0.x merge
add d2e1eef261 build(benchmarks): consume GrailsWebMockUtil from the test fixtures
add a00cb81e6e fix: let an application see a dispatcher-resolved method override
add 4d227fb409 Revert "fix: let an application see a dispatcher-resolved method override"
add 423f2bd3ef test: prove the method override by what it routes, not by what request.method says
add 15db8fc90d refactor: resolve a mapping token through doCall rather than a call override
add 7689098176 fix: keep g:form emitting _method in both modes
add a2ee534496 fix: address review findings on multipart params, internal dispatch and docs
add d3bfaa7621 test: pin the callback order of a repeated postHandle
add e7b5218fe5 docs: cut the commentary in the request path back to what it earns
add 0e0d5993be fix: give every Grails-level reader the method the request routed as
add 2234fe9cf0 fix: finish the effective-method rule, and let it survive a forward
add 9763091e42 test: assert the whole request path in one round trip
add 250034dc9b refactor: put back the property access in the redirect trait
add b4027b9d9a Merge remote-tracking branch 'upstream/8.0.x' into perf/request-path-8.0.x
add a57a164102 Merge remote-tracking branch 'upstream/8.0.x' into perf/request-path-8.0.x
add 065741bfa7 Merge branch '8.0.x' into perf/request-path-8.0.x
add 444da64aa5 Merge remote-tracking branch 'origin/perf/request-path-8.0.x' into perf/request-path-8.0.x
add 93c8ffd209 build: classify grails-benchmarks with the projects that exercise the framework
add 14ae491d59 build: move the benchmark harness under grails-test-examples
add 53ab3a8aff build: declare the benchmark harness at the directory it moved to
add a39a350296 fix: authorize the method the request will be routed as
add e3c2ff2036 Merge remote-tracking branch 'upstream/8.0.x' into perf/request-path-8.0.x
add 3edb3f349f test: count the POST member route in the wildcard resources spec
add 533f7e2cfb Merge branch '8.0.x' into perf/request-path-8.0.x
add 8dfa3636da build: disable Groovy invokedynamic for the Grails 8 compile
add 085c0d2886 fix: stop count() log.debug hitting GORM methodMissing
add c4e794fc6d fix: invoke Map constructors without Class.newInstance under indy-off
add 505542f121 build: keep Grails 8 indy-off only in CompilePlugin
add 25b7937cff Merge branch '8.0.x' into fix/disable-groovy-indy-build
add 13bf4405f8 Fix fields template lookup leak from accessor-keyed memoization
add 05cefde0af Give TemplateLookupCachingSpec its own command fixture
add 1113d60e1d Merge pull request #16302 from apache/fix/16162-fields-memoize-leak
add 9bf5f6623f Add test coverage and fix real bugs in grails-datamapping-core's services package (#16156)
add ecb4a4d31e ci: pin every action to an ASF-approved SHA
add 3b668223da Merge pull request #16308 from apache/ci/asf-approved-action-pins
add 049fee3917 Merge remote-tracking branch 'origin/7.0.x' into merge/7.0.x-into-7.1.x
add 53d9c1eddb Merge pull request #16313 from apache/merge/7.0.x-into-7.1.x
add 473230b732 Merge remote-tracking branch 'origin/7.1.x' into merge/7.1.x-into-7.2.x
add 5075ff30b5 Merge pull request #16314 from apache/merge/7.1.x-into-7.2.x
add def2c9b9bc Merge remote-tracking branch 'origin/7.2.x' into merge/7.2.x-into-8.0.x
add e9cf8b1864 ci: pin the remaining actions to ASF-approved SHAs on 8.0.x
add 5670a65bc8 Merge pull request #16315 from apache/ci/asf-approved-pins-8.0.x
add b34c0eeafc Merge branch '8.0.x' into fix/disable-groovy-indy-build
add cc7e0c3353 build(ci): bound concurrent JVMs on the macOS runner
add 728f00f1a0 Merge branch '8.0.x' into build/ci-daemon-heap-vs-runner-ram
add 4062b15fcf Merge branch 8.0.x into build/ci-daemon-heap-vs-runner-ram
add e2d55173de Merge branch '8.0.x' into build/ci-daemon-heap-vs-runner-ram
add 854938f029 fix: include runtime jars on groovydoc classpath
add 17b9ded93b Merge pull request #16167 from apache/build/ci-daemon-heap-vs-runner-ram
add 6fce5e1b46 Merge branch '8.0.x' into fix/disable-groovy-indy-build
add 41259bf005 Merge pull request #16178 from apache/fix/disable-groovy-indy-build
add 9a5bc99620 Merge branch '8.0.x' into perf/request-path-8.0.x
add c8bbcb89b0 test: cover the forward cases the request path spec left unexercised
add 89b3890662 chore: clear the residue review found in the request path branch
add 5fa7a5e120 revert: keep GrailsWebRequest.getCurrentRequest() undeprecated
add f4172be4bd fix(deps): update Groovy to 5.1.2
add 7801ced1d8 Merge pull request #16321 from apache/groovy-5.1.2
add d5c9cc149d Include groovydoc in the Groovy Snapshot Canary Build
add e8d33a9318 Merge pull request #16309 from apache/matrei-patch-1
add cda191c312 Merge branch '8.0.x' into perf/request-path-8.0.x
add 9cde802ef7 test: pin that the compiler config generator stays off the runtime classpath
add 60515a5ec8 Merge pull request #16325 from apache/test/compiler-config-runtime-classpath-producer
add 82b8648a6d Merge branch '8.0.x' into perf/request-path-8.0.x
add 43510784cf Merge pull request #16149 from codeconsole/perf/request-path-8.0.x
add c6e55d9a4b Keep GORM entities on the DevTools restart classloader
add 44ab8dbd31 Narrow DevTools restart docs to when restart is active
add c8945fd6c3 Wire Hibernate 5 DevTools bootstrap through the dataSource bean
add 03e6eef178 Merge branch '8.0.x' into fix/16287-devtools-gorm-entities
add a137709366 Merge remote-tracking branch 'upstream/8.0.x' into fix/16287-devtools-gorm-entities
add 29abfeedd6 Resolve the DevTools restart loader through the parent chain
add 1917fefdd2 Merge pull request #16324 from jdaugherty/fix/16287-devtools-review
add 0ff4b76646 Merge pull request #16299 from apache/fix/16287-devtools-gorm-entities
add 46a089a8fd test(grails-datamapping-core): restore the transaction service specs lost in the 7.2.x merge
add 6884e173a1 Merge pull request #16316 from apache/test/restore-transaction-service-specs-8.0.x
add 11ff749b5f Fix marshalling of non-public classes and Serializable beans
add e6920c663d Cover dynamically compiled Groovy beans in the marshaller tests
add 2e08c1fc15 Widen a private method copy instead of the cached descriptor
add e9932f371f Share the non-public bean access, and report it once
add 60598510cf Resolve read methods through any public type, and fix two vacuous tests
add 0980623481 Merge pull request #16296 from apache/fix/16294-16295-non-public-bean-marshalling
add e0bba892e7 Merge branch '8.0.x' into fix/interceptor-canonical-path
No new revisions were added by this update.
Summary of changes:
.agents/skills/gradle-developer/SKILL.md | 2 +-
.agents/skills/grails-developer/SKILL.md | 4 +-
.agents/skills/groovy-developer/SKILL.md | 6 +-
.github/workflows/benchmark.yml | 26 +-
.github/workflows/codeanalysis.yml | 4 +-
.github/workflows/codestyle.yml | 6 +-
.github/workflows/coverage.yml | 4 +-
.github/workflows/end-to-end.yml | 4 +-
.github/workflows/forge-deploy-aws.yml | 4 +-
.github/workflows/gradle.yml | 81 ++--
.github/workflows/groovy-snapshot-canary.yml | 11 +-
.github/workflows/rat.yml | 2 +-
.github/workflows/release-publish-docs.yml | 2 +-
.github/workflows/release-verify.yml | 2 +-
.github/workflows/release.yml | 10 +-
.github/workflows/sitemesh2.yml | 4 +-
.github/workflows/validate-actions.yml | 2 +-
.github/workflows/vulnerability-scan.yml | 14 +-
AGENTS.md | 4 +-
.../apache/grails/buildsrc/CompilePlugin.groovy | 7 +
.../grails/buildsrc/GroovydocEnhancerPlugin.groovy | 15 +-
.../grails/buildsrc/CompilePluginSpec.groovy | 77 ++++
.../buildsrc/GroovydocEnhancerPluginSpec.groovy | 54 +++
dependencies.gradle | 4 +-
gradle.properties | 19 +
gradle/grails-extension-gradle-config.gradle | 3 +-
gradle/rat-root-config.gradle | 2 +-
.../groovy/grails/async/web/AsyncController.groovy | 2 +-
.../async/AsyncWebRequestPromiseDecorator.groovy | 2 +-
.../async/mvc/AsyncActionResultTransformer.groovy | 2 +-
.../grails/common/reflect/ReflectionUtils.java | 196 +++++++++
.../common/reflect/ReflectionUtilsSpec.groovy | 174 ++++++++
.../common/reflect/beans/PublicCovariantBase.java | 15 +-
.../common/reflect/beans/PublicFieldBean.java | 16 +-
.../grails/common/reflect/beans/PublicThing.java | 15 +-
.../grails/common/reflect/beans/ThingFactory.java | 106 +++++
.../main/groovy/grails/artefact/Controller.groovy | 38 +-
.../controller/support/AllowedMethodsHelper.groovy | 6 +-
.../controller/support/RequestForwarder.groovy | 2 +-
.../controller/support/ResponseRedirector.groovy | 2 +-
.../controller/support/ResponseRenderer.groovy | 19 +-
.../compiler/web/ControllerActionTransformer.java | 107 +++--
.../controllers/ControllersAutoConfiguration.java | 21 +-
...ilsHiddenHttpMethodFilterAutoConfiguration.java | 74 ++++
.../api/ControllersDomainBindingApi.java | 73 ++--
...rk.boot.autoconfigure.AutoConfiguration.imports | 1 +
.../grails/artefact/ControllerRedirectSpec.groovy | 230 +++++++++++
.../support/AllowedMethodsHelperSpec.groovy | 2 +-
.../controller/support/ResponseRendererSpec.groovy | 107 +++++
.../ControllersAutoConfigurationSpec.groovy | 2 +
...denHttpMethodFilterAutoConfigurationSpec.groovy | 148 +++++++
.../api/ControllersDomainBindingApiSpec.groovy | 147 +++++++
.../marshaller/json/GenericJavaBeanMarshaller.java | 9 +-
.../marshaller/json/GroovyBeanMarshaller.java | 8 +-
.../marshaller/xml/GenericJavaBeanMarshaller.java | 11 +-
.../marshaller/xml/GroovyBeanMarshaller.java | 8 +-
.../beans/DynamicGroovyPersonFactory.groovy | 25 +-
.../converters/beans/GroovyPersonFactory.groovy | 81 ++++
.../web/converters/beans/HiddenCovariantBase.java | 19 +-
.../converters/beans/HiddenCovariantJavaBean.java | 26 +-
.../web/converters/beans/JavaPersonFactory.java | 92 +++++
.../beans/PackagePrivateGroovyPerson.groovy | 35 +-
.../converters/beans/PackagePrivateJavaPerson.java | 29 +-
.../PackagePrivateStandaloneGroovyBean.groovy | 26 +-
.../beans/PackagePrivateStandaloneJavaBean.java | 21 +-
.../grails/web/converters/beans/PublicPerson.java | 20 +-
.../converters/beans/SerializableGroovyBean.groovy | 33 +-
.../web/converters/beans/SerializableJavaBean.java | 32 +-
.../json/NonPublicClassMarshallingSpec.groovy | 314 +++++++++++++++
.../xml/NonPublicClassMarshallingSpec.groovy | 322 +++++++++++++++
.../src/main/groovy/grails/config/Settings.groovy | 12 +
.../cfg/HibernateMappingContextConfiguration.java | 55 ++-
.../HibernateConnectionSourceFactory.java | 13 +-
...HibernateMappingContextConfigurationSpec.groovy | 263 ++++++++++++
.../HibernateConnectionSourceFactorySpec.groovy | 145 +++++++
.../cfg/HibernateMappingContextConfiguration.java | 46 ++-
...HibernateMappingContextConfigurationSpec.groovy | 157 ++++++++
.../grails/databinding/SimpleDataBinder.groovy | 15 +-
.../web/LocaleAwareNumberConverter.groovy | 2 +-
.../org/grails/datastore/gorm/GormStaticApi.groovy | 11 +-
...stractDetachedCriteriaServiceImplementor.groovy | 6 +
.../implementers/AbstractSaveImplementer.groovy | 6 +-
.../implementers/AbstractServiceImplementer.groovy | 7 +-
.../implementers/AbstractWhereImplementer.groovy | 3 +
.../services/implementers/DeleteImplementer.groovy | 6 +-
.../implementers/DeleteWhereImplementer.groovy | 2 +-
.../implementers/FindAllByImplementer.groovy | 3 +-
.../implementers/FindOneImplementer.groovy | 5 +
.../FindOneStringQueryImplementer.groovy | 4 +
.../implementers/InterfaceProjectionBuilder.groovy | 39 +-
.../IterableInterfaceProjectionBuilder.groovy | 16 +-
.../services/implementers/SaveImplementer.groovy | 2 +-
.../implementers/UpdateOneImplementer.groovy | 3 +-
.../services/ServiceImplementerEdgeCaseSpec.groovy | 413 +++++++++++++++++++
.../grails/datastore/gorm/GormStaticApiSpec.groovy | 11 +
.../gorm/services/DefaultTenantServiceSpec.groovy | 2 +-
.../services/DefaultTransactionServiceSpec.groovy | 178 ++++++++-
.../mapping/reflect/DevToolsClassLoaders.java | 107 +++++
.../reflect/DevToolsClassLoadersSpec.groovy | 186 +++++++++
.../src/en/guide/REST/linkingToResources.adoc | 25 ++
.../theWebLayer/controllers/uploadingFiles.adoc | 20 +-
.../theWebLayer/urlmappings/embeddedVariables.adoc | 2 +
.../src/en/guide/upgrading/upgrading80x.adoc | 441 ++++++++++++++++++++-
.../plugin/formfields/FormFieldsTagLib.groovy | 2 +-
.../formfields/FormFieldsTemplateService.groovy | 32 +-
.../formfields/TemplateLookupCachingSpec.groovy | 38 ++
.../core/GrailsGroovyCompilerConfigSpec.groovy | 23 ++
.../build.gradle | 40 ++
.../gradle.properties | 0
.../settings.gradle | 1 +
.../gsp/io/GrailsConventionGroovyPageLocator.java | 2 +-
.../org/grails/web/pages/GSPResponseWriter.java | 2 +-
.../grails/web/servlet/view/GroovyPageView.java | 5 +-
.../web/servlet/view/GroovyPageViewResolver.java | 4 +-
.../org/grails/gsp/jsp/GroovyPagesPageContext.java | 2 +-
.../org/grails/gsp/jsp/PageContextFactory.groovy | 2 +-
.../taglib/WebRequestTemplateVariableBinding.java | 6 +-
.../grails/plugins/web/taglib/FormTagLib.groovy | 4 +
.../web/taglib/FormTagLibResourceTests.groovy | 21 +
.../org/grails/web/taglib/FormTagLibTests.groovy | 15 +
...ailsInterceptorHandlerInterceptorAdapter.groovy | 79 +++-
...InterceptorHandlerInterceptorAdapterSpec.groovy | 325 +++++++++++++++
.../plugins/web/api/MimeTypesApiSupport.groovy | 2 +-
.../web/mime/HttpServletResponseExtension.groovy | 8 +-
.../artefact/controller/RestResponder.groovy | 2 +-
.../web/rest/render/ServletRenderContext.groovy | 7 +-
.../ServletRenderContextHttpMethodSpec.groovy | 58 +++
.../plugin/springsecurity/ReflectionUtils.groovy | 7 +-
.../springsecurity/SpringSecurityUtils.groovy | 12 +-
.../springsecurity/ReflectionUtilsSpec.groovy | 48 +++
...textHolderExceptionTranslationFilterSpec.groovy | 93 +++++
.../AbstractGrailsMockHttpServletResponse.groovy | 6 +-
.../controllers/functionaltests/UrlMappings.groovy | 3 +
.../fileupload/FileUploadTestController.groovy | 20 +
.../requestpath/RequestPathController.groovy | 78 ++++
.../RequestPathForwarderController.groovy} | 22 +-
.../fileupload/FileUploadSpec.groovy | 50 +++
.../requestpath/RequestPathSpec.groovy | 148 +++++++
.../controllers/app4/ErrorsController.groovy | 5 +
...rsController.groovy => UploadController.groovy} | 7 +-
.../grails-app/controllers/app4/UrlMappings.groovy | 1 +
.../app4/OversizedUploadFunctionalSpec.groovy | 66 +++
.../benchmarks}/README.adoc | 35 +-
.../benchmarks}/build.gradle | 16 +
.../controllers/ControllerActionBenchmark.java | 252 ++++++++++++
.../ControllerMappingCollectionBenchmark.java | 195 +++++++++
.../controllers/ControllerResponseBenchmark.java | 248 ++++++++++++
.../databinding/SimpleDataBinderBenchmark.java | 0
.../benchmarks/gsp/GroovyPageParserBenchmark.java | 0
.../interceptors/InterceptorChainBenchmark.java | 183 +++++++++
.../interceptors/UrlMappingMatcherBenchmark.java | 0
.../grails/benchmarks/ruler/CpuRulerBenchmark.java | 0
.../benchmarks/ruler/MemoryRulerBenchmark.java | 0
.../urlmappings/UrlMappingsBenchmark.java | 25 ++
.../views/ViewTemplateRenderingBenchmark.java | 0
.../benchmarks/web/GrailsWebRequestBenchmark.java | 132 ++++++
.../web/MultipartResolutionBenchmark.java | 135 +++++++
.../web/RequestPropertyAccessBenchmark.java | 108 +++++
.../controllers/ControllerFixture.groovy | 108 +++++
.../controllers/ControllerMappingsFixture.groovy | 95 +++++
.../controllers/ControllerResponseFixture.groovy | 106 +++++
.../interceptors/InterceptorChainFixture.groovy | 54 +++
.../interceptors/InterceptorFixture.groovy | 0
.../urlmappings/UrlMappingsFixture.groovy | 0
.../benchmarks/views/ViewTemplateFixture.groovy | 0
.../benchmarks/web/RequestPropertyFixture.groovy | 55 +++
.../grails/benchmarks/web/WebContextFixture.groovy | 57 +++
.../grails/benchmarks/report/Benchmark.groovy | 0
.../benchmarks/report/BenchmarkComparator.groovy | 0
.../grails/benchmarks/report/CommentPoster.groovy | 0
.../grails/benchmarks/report/Comparison.groovy | 0
.../grails/benchmarks/report/JmhCompare.groovy | 0
.../grails/benchmarks/report/JmhResults.groovy | 0
.../grails/benchmarks/report/ReportRenderer.groovy | 0
.../report/BenchmarkComparatorSpec.groovy | 0
.../report/GitHubCommentsHttpSpec.groovy | 0
.../benchmarks/report/GoldenReportSpec.groovy | 0
.../grails/benchmarks/report/JmhCompareSpec.groovy | 0
.../grails/benchmarks/report/PostFileSpec.groovy | 0
.../resources/jmh-golden/broad-base.json | 0
.../resources/jmh-golden/broad-head.json | 0
.../resources/jmh-golden/edges-base.json | 0
.../resources/jmh-golden/edges-head.json | 0
.../resources/jmh-golden/expected-broad.md | 0
.../resources/jmh-golden/expected-edges.md | 0
.../resources/jmh-golden/expected-headonly.md | 0
.../resources/jmh-golden/expected-norulers.md | 0
.../resources/jmh-golden/expected-numbers.md | 0
.../resources/jmh-golden/expected-shards.md | 0
.../resources/jmh-golden/norulers-base.json | 0
.../resources/jmh-golden/norulers-head.json | 0
.../resources/jmh-golden/numbers-base.json | 0
.../resources/jmh-golden/numbers-head.json | 0
.../resources/jmh-golden/shards-base/shard-a.json | 0
.../resources/jmh-golden/shards-base/shard-b.json | 0
.../resources/jmh-golden/shards-head/shard-a.json | 0
.../resources/jmh-golden/shards-head/shard-b.json | 0
grails-test-examples/jetty/build.gradle | 1 +
...{UrlMappings.groovy => UploadController.groovy} | 17 +-
.../controllers/issue12688/UrlMappings.groovy | 1 +
.../issue12688/JettyOversizedUploadSpec.groovy | 61 +++
grails-test-examples/undertow/build.gradle | 1 +
...{UrlMappings.groovy => UploadController.groovy} | 16 +-
.../controllers/undertowapp/UrlMappings.groovy | 1 +
.../undertowapp/UndertowOversizedUploadSpec.groovy | 61 +++
.../web/databinding/GrailsWebDataBinderSpec.groovy | 3 +-
.../web/filters/HiddenHttpMethodFilterTests.groovy | 55 +++
.../ParamsAwareLocaleChangeInterceptorTests.groovy | 51 +++
.../DefaultGrailsApplicationAttributesSpec.groovy | 90 +++++
...ollerActionTransformerAllowedMethodsSpec.groovy | 117 +++++-
.../web/mapping/UrlMappingParameterTests.groovy | 6 +-
.../web/servlet/mvc/GrailsWebRequestSpec.groovy | 120 ++++++
.../grails/testing/web/GrailsWebUnitTest.groovy | 2 +-
.../UrlMappingsBeanDefinitionsPostProcessor.groovy | 9 +
.../web/mapping/UrlMappingsGrailsPlugin.groovy | 6 +-
.../mvc/GenericGroovyTemplateViewResolver.groovy | 4 +-
.../views/mvc/renderer/DefaultViewRenderer.groovy | 2 +-
.../AbstractJsonViewContainerRenderer.groovy | 2 +-
.../json/view/JsonViewTemplateResolverSpec.groovy | 30 +-
.../groovy/grails/web/api/ServletAttributes.groovy | 2 +-
.../grails/web/servlet/mvc/GrailsParameterMap.java | 28 +-
.../web/errors/GrailsWrappedRuntimeException.java | 10 +-
.../i18n/ParamsAwareLocaleChangeInterceptor.groovy | 7 +
.../web/json/PathCapturingJSONWriterWrapper.java | 64 +--
.../DefaultGrailsApplicationAttributes.java | 55 ++-
.../org/grails/web/servlet/GrailsFlashScope.java | 2 +-
.../WebRequestDelegatingRequestContext.java | 2 +-
.../mvc/DefaultRequestStateLookupStrategy.java | 5 +-
.../grails/web/servlet/mvc/GrailsWebRequest.java | 123 ++++--
.../web/util/GrailsApplicationAttributes.java | 15 +
.../org/grails/web/util/HiddenHttpMethod.java | 144 +++++++
.../main/groovy/org/grails/web/util/WebUtils.java | 115 +++++-
.../web/servlet/mvc/GrailsParameterMapTests.groovy | 121 ++++++
.../grails/web/util/HiddenHttpMethodSpec.groovy | 125 ++++++
.../groovy/org/grails/web/util/WebUtilsSpec.groovy | 130 ++++++
.../web/servlet/HttpServletRequestExtension.groovy | 44 ++
.../servlet/HttpServletRequestExtensionSpec.groovy | 56 +++
.../grails/web/databinding/DataBindingUtils.java | 181 ++++++---
.../web/databinding/GrailsWebDataBinder.groovy | 3 +-
...tractRequestBodyDataBindingSourceCreator.groovy | 5 +-
.../web/databinding/DataBindingUtilsSpec.groovy | 272 +++++++++++++
...tRequestBodyDataBindingSourceCreatorSpec.groovy | 25 +-
.../grails/web/errors/GrailsExceptionResolver.java | 54 ++-
.../grails/web/filters/HiddenHttpMethodFilter.java | 8 +-
.../web/servlet/mvc/GrailsDispatcherServlet.groovy | 34 +-
.../web/servlet/mvc/GrailsWebRequestFilter.java | 11 +-
.../web/errors/GrailsExceptionResolverSpec.groovy | 75 ++++
.../GrailsDispatcherServletHiddenMethodSpec.groovy | 130 ++++++
.../servlet/mvc/GrailsDispatcherServletSpec.groovy | 136 +++++++
.../servlet/mvc/GrailsWebRequestFilterSpec.groovy | 102 +++++
.../grails/web/mapping/ResponseRedirector.groovy | 2 +-
.../groovy/grails/web/mapping/UrlMappingInfo.java | 21 +
.../grails/web/mapping/AbstractUrlMappingInfo.java | 24 +-
.../web/mapping/DefaultUrlMappingEvaluator.java | 31 ++
.../grails/web/mapping/DefaultUrlMappingInfo.java | 71 +---
.../web/mapping/DefaultUrlMappingsHolder.java | 58 ++-
.../org/grails/web/mapping/RegexUrlMapping.java | 91 +++--
.../web/mapping/RuntimeConstraintEvaluator.java | 72 ++++
.../mvc/AbstractGrailsControllerUrlMappings.groovy | 6 +-
.../mvc/GrailsControllerUrlMappingInfo.groovy | 3 +
.../mapping/mvc/UrlMappingsHandlerMapping.groovy | 79 ++--
.../AnsiConsoleUrlMappingsRendererSpec.groovy | 3 +
.../web/mapping/RestfulResourceMappingSpec.groovy | 36 +-
.../mapping/WildcardResourcesMappingSpec.groovy | 25 +-
.../EffectiveMethodLinkGenerationSpec.groovy | 71 ++++
.../mapping/RuntimeConstraintEvaluatorSpec.groovy | 113 ++++++
.../web/mapping/UrlMappingSegmentFilterSpec.groovy | 105 +++++
.../mvc/HiddenHttpMethodHandlerMappingSpec.groovy | 317 +++++++++++++++
.../mvc/UrlMappingNameResolutionSpec.groovy | 178 +++++++++
.../mvc/UrlMappingsHandlerMappingSpec.groovy | 61 +++
settings.gradle | 3 +-
271 files changed, 11426 insertions(+), 931 deletions(-)
create mode 100644 build-logic/plugins/src/test/groovy/org/apache/grails/buildsrc/GroovydocEnhancerPluginSpec.groovy
create mode 100644 grails-common/src/main/groovy/org/apache/grails/common/reflect/ReflectionUtils.java
create mode 100644 grails-common/src/test/groovy/org/apache/grails/common/reflect/ReflectionUtilsSpec.groovy
copy grails-benchmarks/src/main/groovy/org/apache/grails/benchmarks/interceptors/InterceptorFixture.groovy => grails-common/src/test/groovy/org/apache/grails/common/reflect/beans/PublicCovariantBase.java (76%)
copy grails-test-examples/app4/grails-app/controllers/app4/ErrorsController.groovy => grails-common/src/test/groovy/org/apache/grails/common/reflect/beans/PublicFieldBean.java (73%)
copy grails-benchmarks/src/main/groovy/org/apache/grails/benchmarks/interceptors/InterceptorFixture.groovy => grails-common/src/test/groovy/org/apache/grails/common/reflect/beans/PublicThing.java (76%)
create mode 100644 grails-common/src/test/groovy/org/apache/grails/common/reflect/beans/ThingFactory.java
create mode 100644 grails-controllers/src/main/groovy/org/grails/plugins/web/controllers/GrailsHiddenHttpMethodFilterAutoConfiguration.java
create mode 100644 grails-controllers/src/test/groovy/grails/artefact/ControllerRedirectSpec.groovy
create mode 100644 grails-controllers/src/test/groovy/grails/artefact/controller/support/ResponseRendererSpec.groovy
create mode 100644 grails-controllers/src/test/groovy/org/grails/plugins/web/controllers/GrailsHiddenHttpMethodFilterAutoConfigurationSpec.groovy
create mode 100644 grails-controllers/src/test/groovy/org/grails/plugins/web/controllers/api/ControllersDomainBindingApiSpec.groovy
copy grails-test-examples/undertow/grails-app/controllers/undertowapp/UrlMappings.groovy => grails-converters/src/test/groovy/org/grails/web/converters/beans/DynamicGroovyPersonFactory.groovy (62%)
create mode 100644 grails-converters/src/test/groovy/org/grails/web/converters/beans/GroovyPersonFactory.groovy
copy grails-test-examples/jetty/grails-app/controllers/issue12688/UrlMappings.groovy => grails-converters/src/test/groovy/org/grails/web/converters/beans/HiddenCovariantBase.java (72%)
copy grails-web-url-mappings/src/main/groovy/org/grails/web/mapping/mvc/GrailsControllerUrlMappingInfo.groovy => grails-converters/src/test/groovy/org/grails/web/converters/beans/HiddenCovariantJavaBean.java (61%)
create mode 100644 grails-converters/src/test/groovy/org/grails/web/converters/beans/JavaPersonFactory.java
copy grails-web-url-mappings/src/main/groovy/org/grails/web/mapping/mvc/GrailsControllerUrlMappingInfo.groovy => grails-converters/src/test/groovy/org/grails/web/converters/beans/PackagePrivateGroovyPerson.groovy (59%)
copy grails-test-examples/app4/grails-app/controllers/app4/ErrorsController.groovy => grails-converters/src/test/groovy/org/grails/web/converters/beans/PackagePrivateJavaPerson.java (63%)
copy grails-test-examples/app4/grails-app/controllers/app4/ErrorsController.groovy => grails-converters/src/test/groovy/org/grails/web/converters/beans/PackagePrivateStandaloneGroovyBean.groovy (62%)
copy grails-test-examples/app4/grails-app/controllers/app4/ErrorsController.groovy => grails-converters/src/test/groovy/org/grails/web/converters/beans/PackagePrivateStandaloneJavaBean.java (66%)
copy grails-test-examples/app4/grails-app/controllers/app4/ErrorsController.groovy => grails-converters/src/test/groovy/org/grails/web/converters/beans/PublicPerson.java (64%)
copy grails-web-url-mappings/src/main/groovy/org/grails/web/mapping/mvc/GrailsControllerUrlMappingInfo.groovy => grails-converters/src/test/groovy/org/grails/web/converters/beans/SerializableGroovyBean.groovy (53%)
copy grails-web-url-mappings/src/main/groovy/org/grails/web/mapping/mvc/GrailsControllerUrlMappingInfo.groovy => grails-converters/src/test/groovy/org/grails/web/converters/beans/SerializableJavaBean.java (54%)
create mode 100644 grails-converters/src/test/groovy/org/grails/web/converters/marshaller/json/NonPublicClassMarshallingSpec.groovy
create mode 100644 grails-converters/src/test/groovy/org/grails/web/converters/marshaller/xml/NonPublicClassMarshallingSpec.groovy
create mode 100644 grails-data-hibernate5/core/src/test/groovy/org/grails/orm/hibernate/cfg/HibernateMappingContextConfigurationSpec.groovy
create mode 100644 grails-datamapping-core/src/test/groovy/grails/gorm/services/ServiceImplementerEdgeCaseSpec.groovy
create mode 100644 grails-datastore-core/src/main/groovy/org/grails/datastore/mapping/reflect/DevToolsClassLoaders.java
create mode 100644 grails-datastore-core/src/test/groovy/org/grails/datastore/mapping/reflect/DevToolsClassLoadersSpec.groovy
create mode 100644 grails-gradle/plugins/src/test/resources/test-projects/compiler-config-runtime-classpath-producer/build.gradle
copy grails-gradle/plugins/src/test/resources/test-projects/{auto-apply-bom-disabled => compiler-config-runtime-classpath-producer}/gradle.properties (100%)
create mode 100644 grails-gradle/plugins/src/test/resources/test-projects/compiler-config-runtime-classpath-producer/settings.gradle
create mode 100644 grails-rest-transforms/src/test/groovy/org/grails/plugins/web/rest/render/ServletRenderContextHttpMethodSpec.groovy
create mode 100644 grails-spring-security/plugin/src/test/groovy/grails/plugin/springsecurity/web/UpdateRequestContextHolderExceptionTranslationFilterSpec.groovy
create mode 100644 grails-test-examples/app1/grails-app/controllers/functionaltests/requestpath/RequestPathController.groovy
copy grails-test-examples/{app4/grails-app/controllers/app4/ErrorsController.groovy => app1/grails-app/controllers/functionaltests/requestpath/RequestPathForwarderController.groovy} (54%)
create mode 100644 grails-test-examples/app1/src/integration-test/groovy/functionaltests/requestpath/RequestPathSpec.groovy
copy grails-test-examples/app4/grails-app/controllers/app4/{ErrorsController.groovy => UploadController.groovy} (86%)
create mode 100644 grails-test-examples/app4/src/integration-test/groovy/app4/OversizedUploadFunctionalSpec.groovy
rename {grails-benchmarks => grails-test-examples/benchmarks}/README.adoc (76%)
rename {grails-benchmarks => grails-test-examples/benchmarks}/build.gradle (93%)
create mode 100644 grails-test-examples/benchmarks/src/jmh/java/org/apache/grails/benchmarks/controllers/ControllerActionBenchmark.java
create mode 100644 grails-test-examples/benchmarks/src/jmh/java/org/apache/grails/benchmarks/controllers/ControllerMappingCollectionBenchmark.java
create mode 100644 grails-test-examples/benchmarks/src/jmh/java/org/apache/grails/benchmarks/controllers/ControllerResponseBenchmark.java
rename {grails-benchmarks => grails-test-examples/benchmarks}/src/jmh/java/org/apache/grails/benchmarks/databinding/SimpleDataBinderBenchmark.java (100%)
rename {grails-benchmarks => grails-test-examples/benchmarks}/src/jmh/java/org/apache/grails/benchmarks/gsp/GroovyPageParserBenchmark.java (100%)
create mode 100644 grails-test-examples/benchmarks/src/jmh/java/org/apache/grails/benchmarks/interceptors/InterceptorChainBenchmark.java
rename {grails-benchmarks => grails-test-examples/benchmarks}/src/jmh/java/org/apache/grails/benchmarks/interceptors/UrlMappingMatcherBenchmark.java (100%)
rename {grails-benchmarks => grails-test-examples/benchmarks}/src/jmh/java/org/apache/grails/benchmarks/ruler/CpuRulerBenchmark.java (100%)
rename {grails-benchmarks => grails-test-examples/benchmarks}/src/jmh/java/org/apache/grails/benchmarks/ruler/MemoryRulerBenchmark.java (100%)
rename {grails-benchmarks => grails-test-examples/benchmarks}/src/jmh/java/org/apache/grails/benchmarks/urlmappings/UrlMappingsBenchmark.java (75%)
rename {grails-benchmarks => grails-test-examples/benchmarks}/src/jmh/java/org/apache/grails/benchmarks/views/ViewTemplateRenderingBenchmark.java (100%)
create mode 100644 grails-test-examples/benchmarks/src/jmh/java/org/apache/grails/benchmarks/web/GrailsWebRequestBenchmark.java
create mode 100644 grails-test-examples/benchmarks/src/jmh/java/org/apache/grails/benchmarks/web/MultipartResolutionBenchmark.java
create mode 100644 grails-test-examples/benchmarks/src/jmh/java/org/apache/grails/benchmarks/web/RequestPropertyAccessBenchmark.java
create mode 100644 grails-test-examples/benchmarks/src/main/groovy/org/apache/grails/benchmarks/controllers/ControllerFixture.groovy
create mode 100644 grails-test-examples/benchmarks/src/main/groovy/org/apache/grails/benchmarks/controllers/ControllerMappingsFixture.groovy
create mode 100644 grails-test-examples/benchmarks/src/main/groovy/org/apache/grails/benchmarks/controllers/ControllerResponseFixture.groovy
create mode 100644 grails-test-examples/benchmarks/src/main/groovy/org/apache/grails/benchmarks/interceptors/InterceptorChainFixture.groovy
rename {grails-benchmarks => grails-test-examples/benchmarks}/src/main/groovy/org/apache/grails/benchmarks/interceptors/InterceptorFixture.groovy (100%)
rename {grails-benchmarks => grails-test-examples/benchmarks}/src/main/groovy/org/apache/grails/benchmarks/urlmappings/UrlMappingsFixture.groovy (100%)
rename {grails-benchmarks => grails-test-examples/benchmarks}/src/main/groovy/org/apache/grails/benchmarks/views/ViewTemplateFixture.groovy (100%)
create mode 100644 grails-test-examples/benchmarks/src/main/groovy/org/apache/grails/benchmarks/web/RequestPropertyFixture.groovy
create mode 100644 grails-test-examples/benchmarks/src/main/groovy/org/apache/grails/benchmarks/web/WebContextFixture.groovy
rename {grails-benchmarks => grails-test-examples/benchmarks}/src/report/groovy/org/apache/grails/benchmarks/report/Benchmark.groovy (100%)
rename {grails-benchmarks => grails-test-examples/benchmarks}/src/report/groovy/org/apache/grails/benchmarks/report/BenchmarkComparator.groovy (100%)
rename {grails-benchmarks => grails-test-examples/benchmarks}/src/report/groovy/org/apache/grails/benchmarks/report/CommentPoster.groovy (100%)
rename {grails-benchmarks => grails-test-examples/benchmarks}/src/report/groovy/org/apache/grails/benchmarks/report/Comparison.groovy (100%)
rename {grails-benchmarks => grails-test-examples/benchmarks}/src/report/groovy/org/apache/grails/benchmarks/report/JmhCompare.groovy (100%)
rename {grails-benchmarks => grails-test-examples/benchmarks}/src/report/groovy/org/apache/grails/benchmarks/report/JmhResults.groovy (100%)
rename {grails-benchmarks => grails-test-examples/benchmarks}/src/report/groovy/org/apache/grails/benchmarks/report/ReportRenderer.groovy (100%)
rename {grails-benchmarks => grails-test-examples/benchmarks}/src/reportTest/groovy/org/apache/grails/benchmarks/report/BenchmarkComparatorSpec.groovy (100%)
rename {grails-benchmarks => grails-test-examples/benchmarks}/src/reportTest/groovy/org/apache/grails/benchmarks/report/GitHubCommentsHttpSpec.groovy (100%)
rename {grails-benchmarks => grails-test-examples/benchmarks}/src/reportTest/groovy/org/apache/grails/benchmarks/report/GoldenReportSpec.groovy (100%)
rename {grails-benchmarks => grails-test-examples/benchmarks}/src/reportTest/groovy/org/apache/grails/benchmarks/report/JmhCompareSpec.groovy (100%)
rename {grails-benchmarks => grails-test-examples/benchmarks}/src/reportTest/groovy/org/apache/grails/benchmarks/report/PostFileSpec.groovy (100%)
rename {grails-benchmarks => grails-test-examples/benchmarks}/src/reportTest/resources/jmh-golden/broad-base.json (100%)
rename {grails-benchmarks => grails-test-examples/benchmarks}/src/reportTest/resources/jmh-golden/broad-head.json (100%)
rename {grails-benchmarks => grails-test-examples/benchmarks}/src/reportTest/resources/jmh-golden/edges-base.json (100%)
rename {grails-benchmarks => grails-test-examples/benchmarks}/src/reportTest/resources/jmh-golden/edges-head.json (100%)
rename {grails-benchmarks => grails-test-examples/benchmarks}/src/reportTest/resources/jmh-golden/expected-broad.md (100%)
rename {grails-benchmarks => grails-test-examples/benchmarks}/src/reportTest/resources/jmh-golden/expected-edges.md (100%)
rename {grails-benchmarks => grails-test-examples/benchmarks}/src/reportTest/resources/jmh-golden/expected-headonly.md (100%)
rename {grails-benchmarks => grails-test-examples/benchmarks}/src/reportTest/resources/jmh-golden/expected-norulers.md (100%)
rename {grails-benchmarks => grails-test-examples/benchmarks}/src/reportTest/resources/jmh-golden/expected-numbers.md (100%)
rename {grails-benchmarks => grails-test-examples/benchmarks}/src/reportTest/resources/jmh-golden/expected-shards.md (100%)
rename {grails-benchmarks => grails-test-examples/benchmarks}/src/reportTest/resources/jmh-golden/norulers-base.json (100%)
rename {grails-benchmarks => grails-test-examples/benchmarks}/src/reportTest/resources/jmh-golden/norulers-head.json (100%)
rename {grails-benchmarks => grails-test-examples/benchmarks}/src/reportTest/resources/jmh-golden/numbers-base.json (100%)
rename {grails-benchmarks => grails-test-examples/benchmarks}/src/reportTest/resources/jmh-golden/numbers-head.json (100%)
rename {grails-benchmarks => grails-test-examples/benchmarks}/src/reportTest/resources/jmh-golden/shards-base/shard-a.json (100%)
rename {grails-benchmarks => grails-test-examples/benchmarks}/src/reportTest/resources/jmh-golden/shards-base/shard-b.json (100%)
rename {grails-benchmarks => grails-test-examples/benchmarks}/src/reportTest/resources/jmh-golden/shards-head/shard-a.json (100%)
rename {grails-benchmarks => grails-test-examples/benchmarks}/src/reportTest/resources/jmh-golden/shards-head/shard-b.json (100%)
copy grails-test-examples/jetty/grails-app/controllers/issue12688/{UrlMappings.groovy => UploadController.groovy} (78%)
create mode 100644 grails-test-examples/jetty/src/integration-test/groovy/issue12688/JettyOversizedUploadSpec.groovy
copy grails-test-examples/undertow/grails-app/controllers/undertowapp/{UrlMappings.groovy => UploadController.groovy} (78%)
create mode 100644 grails-test-examples/undertow/src/integration-test/groovy/undertowapp/UndertowOversizedUploadSpec.groovy
create mode 100644 grails-test-suite-uber/src/test/groovy/org/grails/web/servlet/DefaultGrailsApplicationAttributesSpec.groovy
create mode 100644 grails-test-suite-web/src/test/groovy/org/grails/web/servlet/mvc/GrailsWebRequestSpec.groovy
create mode 100644 grails-web-common/src/main/groovy/org/grails/web/util/HiddenHttpMethod.java
create mode 100644 grails-web-common/src/test/groovy/org/grails/web/util/HiddenHttpMethodSpec.groovy
create mode 100644 grails-web-databinding/src/test/groovy/grails/web/databinding/DataBindingUtilsSpec.groovy
create mode 100644 grails-web-mvc/src/test/groovy/org/grails/web/servlet/mvc/GrailsDispatcherServletHiddenMethodSpec.groovy
create mode 100644 grails-web-mvc/src/test/groovy/org/grails/web/servlet/mvc/GrailsDispatcherServletSpec.groovy
create mode 100644 grails-web-mvc/src/test/groovy/org/grails/web/servlet/mvc/GrailsWebRequestFilterSpec.groovy
create mode 100644 grails-web-url-mappings/src/main/groovy/org/grails/web/mapping/RuntimeConstraintEvaluator.java
create mode 100644 grails-web-url-mappings/src/test/groovy/org/grails/web/mapping/EffectiveMethodLinkGenerationSpec.groovy
create mode 100644 grails-web-url-mappings/src/test/groovy/org/grails/web/mapping/RuntimeConstraintEvaluatorSpec.groovy
create mode 100644 grails-web-url-mappings/src/test/groovy/org/grails/web/mapping/UrlMappingSegmentFilterSpec.groovy
create mode 100644 grails-web-url-mappings/src/test/groovy/org/grails/web/mapping/mvc/HiddenHttpMethodHandlerMappingSpec.groovy
create mode 100644 grails-web-url-mappings/src/test/groovy/org/grails/web/mapping/mvc/UrlMappingNameResolutionSpec.groovy