close
Skip to content

chore: Merge 7.1.x into 8.0.x#15521

Merged
jamesfredley merged 50 commits into
8.0.xfrom
merge/7.1.x-into-8.0.x
Mar 20, 2026
Merged

chore: Merge 7.1.x into 8.0.x#15521
jamesfredley merged 50 commits into
8.0.xfrom
merge/7.1.x-into-8.0.x

Conversation

@jamesfredley

Copy link
Copy Markdown
Contributor

Summary

  • Merge latest 7.1.x into 8.0.x to keep branches in sync
  • Clean merge - no conflicts

Incoming changes from 7.1.x

New modules:

  • grails-testing-support-http-client - new HTTP client testing support module

Fixes:

Deprecations (7.1.x preparing for 8.0.x removals):

  • grails.web.JSONBuilder
  • Forked JSON builder classes (removed, using Groovy's built-in)
  • ArtefactTypeAstTransformation method
  • GrailsApplication constants
  • AetherGrapeEngine
  • GrailsConfigUtils.executeGrailsBootstraps
  • Metadata.get and getProperty
  • Constrained.isDisplay
  • Entity.ALL_DATA_SOURCES, DEFAULT_DATA_SOURCE
  • FormFieldsTagLib.input, FormTagLib.actionSubmit, ApplicationTagLib.createLinkTo
  • BeanPropertyAccessor.getBeanClass()

Build/CI:

  • Enable running single tests with --tests flag
  • Dependabot: release-drafter v7, action-gh-release 2.6.1
  • Groovy joint workflow updates

Test improvements:

  • Functional tests migrated to grails-testing-support-http-client
  • TeamSpec enabled in CI
  • DefaultGrailsTagLibClass test coverage added

Docs:

  • Renamed updateable.adoc to updatable.adoc

matrei and others added 30 commits February 27, 2026 18:11
Add for removal and also to the adapter and the adapter bean.
Add for removal.
This is useful as it runs in the same context as setup()
but only runs once. This gives you access to objects
not yet initialized in setupSpec().
Update docs and usages to the preferred `updatable`
property name.

Cheap to keep backwards compatibility,
so no urgent need to remove.
Add for removal.
…or locale compatibility

Some locales (e.g., Norwegian nb-NO) use Unicode minus U+2212 instead of
ASCII hyphen-minus U+002D when formatting negative numbers. This causes
issues in HTML number input fields that expect standard ASCII minus.

Normalize DecimalFormatSymbols.minusSign to ASCII '-' in FormatTagLib,
ValidationTagLib, and FormFieldsTagLib before formatting numbers.

Fixes #15178

Assisted-by: Claude Code <Claude@Claude.ai>
Add Geb integration tests in gsp-layout test example to verify that
g:formatNumber renders negative numbers with ASCII minus (U+002D)
instead of Unicode minus (U+2212) when using Norwegian locale (nb_NO).

New files:
- formatLocaleNumber.gsp view with locale-specific number formatting
- formatLocaleNumber() controller action providing negative test values
- 4 Geb specs in GspTagLibSpec for int, long, BigDecimal, and positive

Relates to #15178

Assisted-by: Claude Code <Claude@Claude.ai>
Address review feedback on PR #15475 by narrowing the fix scope:

- Revert changes to FormatTagLib (display tag, not input-specific)
- Revert changes to ValidationTagLib (not input-specific)
- Revert functional tests that tested g:formatNumber with locale
- Keep fix only in FormFieldsTagLib.getNumberFormatter() which is
  explicitly input-specific (called from renderNumericInput)
- Add data-driven Spock test covering nb_NO, nn_NO, sv_SE, fi_FI,
  and en_US locales in DefaultInputRenderingSpec

The fix now only normalizes Unicode minus (U+2212) to ASCII minus
(U+002D) when formatting values for HTML <input type="number">
elements via the f:field tag, which is the correct and isolated
location per WHATWG spec requirements.

Fixes #15178

Assisted-by: Claude Code <Claude@Claude.ai>
Was already removed in core but seems to have lived on in
converters. Add for removal.
Only used internally and not published in 7.0.x.
Will be published for external use in 7.1.x.
Bumps [release-drafter/release-drafter](https://github.com/release-drafter/release-drafter) from 6 to 7.
- [Release notes](https://github.com/release-drafter/release-drafter/releases)
- [Commits](release-drafter/release-drafter@v6...v7)

---
updated-dependencies:
- dependency-name: release-drafter/release-drafter
  dependency-version: '7'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Bumps [softprops/action-gh-release](https://github.com/softprops/action-gh-release) from 2.5.0 to 2.6.1.
- [Release notes](https://github.com/softprops/action-gh-release/releases)
- [Changelog](https://github.com/softprops/action-gh-release/blob/master/CHANGELOG.md)
- [Commits](softprops/action-gh-release@v2.5.0...v2.6.1)

---
updated-dependencies:
- dependency-name: softprops/action-gh-release
  dependency-version: 2.6.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
jdaugherty and others added 20 commits March 16, 2026 22:45
chore: merge 7.0.9->7.0.x; bump to 7.0.10-SNAPSHOT
…rops/action-gh-release-2.6.1

chore(deps): bump softprops/action-gh-release from 2.5.0 to 2.6.1
…se-drafter/release-drafter-7

chore(deps): bump release-drafter/release-drafter from 6 to 7
- Use Ersatz for Http Client tests
- XML formatting and parsing options
- JSON formatting and parsing options
- Use `assert*` lingo instead of `expect*`
fix: normalize Unicode minus sign in GSP number formatting for locale compatibility
Add for removal to previously deprecated methods and classes
…g-support

new module `grails-testing-support-http-client`
Enable running single tests with Gradle `--tests` flag
# Conflicts:
#	gradle.properties
#	grails-core/src/test/groovy/grails/util/GrailsUtilTests.java
Copilot AI review requested due to automatic review settings March 20, 2026 19:29
@jamesfredley jamesfredley merged commit cee6619 into 8.0.x Mar 20, 2026
1 of 2 checks passed
@jamesfredley jamesfredley deleted the merge/7.1.x-into-8.0.x branch March 20, 2026 19:29

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Merges the latest 7.1.x changes into 8.0.x, including a new HTTP client testing support module, deprecation metadata updates, and multiple test/doc migrations to keep branches aligned.

Changes:

  • Introduces grails-testing-support-http-client with JSON/XML assertion utilities and multipart helpers plus accompanying tests/docs.
  • Migrates many functional/integration tests away from Micronaut HttpClient to the new HttpClientSupport trait.
  • Applies a broad set of deprecation annotations / metadata updates, plus doc renames and minor build/CI adjustments.

Reviewed changes

Copilot reviewed 136 out of 161 changed files in this pull request and generated 5 comments.

Show a summary per file
File Description
grails-validation/src/main/groovy/grails/validation/ConstrainedDelegate.groovy Adds since metadata to a deprecated API.
grails-testing-support-http-client/src/test/groovy/org/apache/grails/testing/http/client/utils/XmlUtilsSpec.groovy Adds test coverage for new XML utilities.
grails-testing-support-http-client/src/test/groovy/org/apache/grails/testing/http/client/utils/JsonUtilsSpec.groovy Adds test coverage for new JSON utilities.
grails-testing-support-http-client/src/test/groovy/org/apache/grails/testing/http/client/MultipartBodySpec.groovy Adds test coverage for multipart builder.
grails-testing-support-http-client/src/main/groovy/org/apache/grails/testing/http/client/utils/XmlUtils.groovy Adds secure XML parsing + XML rendering helpers.
grails-testing-support-http-client/src/main/groovy/org/apache/grails/testing/http/client/utils/JsonUtils.groovy Adds JSON parsing + assertion helpers used in HTTP testing.
grails-testing-support-http-client/src/main/groovy/org/apache/grails/testing/http/client/MultipartBody.groovy Adds multipart/form-data request body builder.
grails-testing-support-http-client/build.gradle Adds build config and dependencies for new module.
grails-testing-support-http-client/README.md Documents new HTTP client testing support module.
grails-testing-support-dbcleanup-core/src/main/groovy/org/apache/grails/testing/cleanup/core/DatabaseCleanup.groovy Makes @DatabaseCleanup inheritable.
grails-testing-support-core/src/main/groovy/grails/testing/spock/OnceBefore.groovy Removes deprecated marker from collected annotation.
grails-test-suite-web/src/test/groovy/org/grails/web/binding/JSONBindingToNullSpec.groovy Migrates away from grails.web.JSONBuilder to Groovy JsonBuilder.
grails-test-suite-uber/build.gradle Refactors test task setup and adds testAll.
grails-test-examples/views-functional-tests/src/integration-test/groovy/functional/tests/api/NamespacedBookSpec.groovy Migrates functional test to HttpClientSupport.
grails-test-examples/views-functional-tests/src/integration-test/groovy/functional/tests/VehicleSpec.groovy Migrates functional test to HttpClientSupport.
grails-test-examples/views-functional-tests/src/integration-test/groovy/functional/tests/TestGsonControllerSpec.groovy Migrates functional test to HttpClientSupport.
grails-test-examples/views-functional-tests/src/integration-test/groovy/functional/tests/TestGmlControllerSpec.groovy Migrates functional test to HttpClientSupport.
grails-test-examples/views-functional-tests/src/integration-test/groovy/functional/tests/TestControllerSpec.groovy Migrates functional test to HttpClientSupport.
grails-test-examples/views-functional-tests/src/integration-test/groovy/functional/tests/TeamSpec.groovy Migrates functional test to HttpClientSupport and updates HAL assertions.
grails-test-examples/views-functional-tests/src/integration-test/groovy/functional/tests/ProxySpec.groovy Migrates functional test to HttpClientSupport.
grails-test-examples/views-functional-tests/src/integration-test/groovy/functional/tests/ProjectSpec.groovy Migrates functional test to HttpClientSupport.
grails-test-examples/views-functional-tests/src/integration-test/groovy/functional/tests/ProductSpec.groovy Migrates functional test to HttpClientSupport and simplifies payload creation.
grails-test-examples/views-functional-tests/src/integration-test/groovy/functional/tests/PersonInheritanceSpec.groovy Migrates functional test to HttpClientSupport.
grails-test-examples/views-functional-tests/src/integration-test/groovy/functional/tests/ObjectTemplateSpec.groovy Migrates functional test to HttpClientSupport.
grails-test-examples/views-functional-tests/src/integration-test/groovy/functional/tests/ModelInterceptorIntSpec.groovy Migrates functional test to HttpClientSupport.
grails-test-examples/views-functional-tests/src/integration-test/groovy/functional/tests/InheritanceSpec.groovy Migrates functional test to HttpClientSupport.
grails-test-examples/views-functional-tests/src/integration-test/groovy/functional/tests/HttpClientSpec.groovy Removes legacy Micronaut HTTP client test base class.
grails-test-examples/views-functional-tests/src/integration-test/groovy/functional/tests/EmbeddedSpec.groovy Migrates functional test to HttpClientSupport.
grails-test-examples/views-functional-tests/src/integration-test/groovy/functional/tests/CustomerSpec.groovy Migrates functional test to HttpClientSupport.
grails-test-examples/views-functional-tests/src/integration-test/groovy/functional/tests/CircularSpec.groovy Migrates functional test to HttpClientSupport.
grails-test-examples/views-functional-tests/src/integration-test/groovy/functional/tests/BulletinSpec.groovy Migrates functional test to HttpClientSupport.
grails-test-examples/views-functional-tests/src/integration-test/groovy/functional/tests/BookSpec.groovy Migrates functional test to HttpClientSupport and updates assertions for errors/links.
grails-test-examples/views-functional-tests/build.gradle Switches functional test deps to new http-client testing module.
grails-test-examples/micronaut/src/integration-test/groovy/micronaut/MicronautDeclarativeClientSpec.groovy Updates Ersatz server usage and removes some Micronaut HttpClient tests.
grails-test-examples/micronaut/build.gradle Adds Ersatz Groovy + new http-client testing support for integration tests.
grails-test-examples/issue-views-182/src/integration-test/groovy/views182/HttpClientCommonSpec.groovy Removes legacy Micronaut HTTP client base for issue example tests.
grails-test-examples/issue-views-182/src/integration-test/groovy/views182/CustomErrorSpec.groovy Migrates issue example test to HttpClientSupport.
grails-test-examples/issue-views-182/build.gradle Updates deps to use new http-client testing module.
grails-test-examples/issue-15228/src/integration-test/groovy/issue11767/app/GsonViewRespondSpec.groovy Migrates issue example test to HttpClientSupport.
grails-test-examples/issue-15228/build.gradle Updates deps to use new http-client testing module.
grails-test-examples/issue-11767/src/integration-test/groovy/issue11767/app/ConfigLoadingSpec.groovy Migrates issue example test to HttpClientSupport.
grails-test-examples/issue-11767/build.gradle Updates deps to use new http-client testing module.
grails-test-examples/issue-11102/src/integration-test/groovy/issue11102/TestControllerSpec.groovy Migrates issue example test to HttpClientSupport.
grails-test-examples/issue-11102/src/integration-test/groovy/issue11102/HttpClientCommonSpec.groovy Removes legacy Micronaut HTTP client base for issue example tests.
grails-test-examples/issue-11102/build.gradle Updates deps to use new http-client testing module.
grails-test-examples/hibernate5/issue450/src/integration-test/groovy/example/BookControllerSpec.groovy Migrates integration test to HttpClientSupport.
grails-test-examples/hibernate5/issue450/build.gradle Updates integration test deps to use new http-client testing module.
grails-test-examples/hibernate5/grails-multiple-datasources/src/integration-test/groovy/functionaltests/MultiDataSourceWithSessionSpec.groovy Migrates integration test to HttpClientSupport.
grails-test-examples/hibernate5/grails-multiple-datasources/build.gradle Updates integration test deps to use new http-client testing module.
grails-test-examples/demo33/src/integration-test/groovy/demo/JsonControllerSpec.groovy Migrates demo integration test to HttpClientSupport.
grails-test-examples/demo33/build.gradle Adds integration test dependency on http-client testing module.
grails-test-examples/cache/src/integration-test/groovy/com/demo/AdvancedCachingIntegrationSpec.groovy Migrates caching integration tests to HttpClientSupport.
grails-test-examples/cache/build.gradle Updates integration test deps to use new http-client testing module.
grails-test-examples/async-events-pubsub-demo/src/integration-test/groovy/pubsub/demo/TaskControllerSpec.groovy Migrates integration test to HttpClientSupport.
grails-test-examples/async-events-pubsub-demo/build.gradle Updates integration test deps to use new http-client testing module.
grails-test-examples/app1/src/integration-test/groovy/functionaltests/springevents/SpringEventsSpec.groovy Migrates integration tests to HttpClientSupport.
grails-test-examples/app1/src/integration-test/groovy/functionaltests/interceptors/InterceptorOrderingSpec.groovy Migrates integration tests to HttpClientSupport.
grails-test-examples/app1/src/integration-test/groovy/functionaltests/interceptors/InterceptorAdvancedMatchingSpec.groovy Migrates integration tests to HttpClientSupport.
grails-test-examples/app1/src/integration-test/groovy/functionaltests/errorhandling/ErrorHandlingSpec.groovy Migrates integration tests to HttpClientSupport and adjusts error assertions.
grails-test-examples/app1/src/integration-test/groovy/functionaltests/caching/CachingSpec.groovy Migrates integration tests to HttpClientSupport and simplifies JSON parsing.
grails-test-examples/app1/src/integration-test/groovy/functionaltests/BookRestfulControllerSpec.groovy Migrates integration tests to HttpClientSupport.
grails-test-examples/app1/src/integration-test/groovy/functionaltests/AtResourceSpec.groovy Migrates integration tests to HttpClientSupport.
grails-test-examples/app1/build.gradle Updates integration test deps to use new http-client testing module.
grails-shell-cli/src/main/groovy/org/grails/cli/compiler/grape/AetherGrapeEngineFactory.java Marks deprecated engine factory for removal.
grails-shell-cli/src/main/groovy/org/grails/cli/compiler/grape/AetherGrapeEngine.java Marks deprecated engine for removal.
grails-gsp/plugin/src/main/groovy/org/grails/plugins/web/taglib/FormTagLib.groovy Marks deprecated tag closure for removal.
grails-gsp/plugin/src/main/groovy/org/grails/plugins/web/taglib/ApplicationTagLib.groovy Deprecates tag and adjusts metadata access.
grails-gsp/grails-taglib/src/test/groovy/org/grails/core/gsp/DefaultGrailsTagLibClassSpec.groovy Adds regression tests for tag discovery (compileStatic).
grails-gsp/grails-taglib/src/main/groovy/org/grails/core/gsp/DefaultGrailsTagLibClass.java Adjusts tag discovery to include Closure fields for compiled taglibs.
grails-gradle/model/src/main/groovy/grails/util/Metadata.groovy Adds deprecation metadata for legacy accessors.
grails-fields/src/test/groovy/grails/plugin/formfields/DefaultInputRenderingSpec.groovy Adds locale regression coverage for ASCII minus formatting.
grails-fields/src/main/groovy/grails/plugin/formfields/PropertyPathAccessor.groovy Marks deprecated accessor for removal.
grails-fields/src/main/groovy/grails/plugin/formfields/DelegatingBeanPropertyAccessorImpl.groovy Marks deprecated accessor for removal.
grails-fields/src/main/groovy/grails/plugin/formfields/BeanPropertyAccessorImpl.groovy Marks deprecated beanClass field for removal.
grails-fields/src/main/groovy/grails/plugin/formfields/BeanPropertyAccessor.groovy Marks deprecated API for removal.
grails-fields/grails-app/taglib/grails/plugin/formfields/FormFieldsTagLib.groovy Deprecates input tag and normalizes minus sign in number formatting.
grails-events/compat/src/main/groovy/reactor/spring/context/annotation/Selector.groovy Deprecation metadata updates for compat APIs.
grails-events/compat/src/main/groovy/reactor/spring/context/annotation/Consumer.groovy Deprecation metadata updates for compat APIs.
grails-events/compat/src/main/groovy/reactor/fn/Consumer.java Deprecation metadata updates for compat APIs.
grails-events/compat/src/main/groovy/reactor/bus/selector/Selector.java Deprecation metadata updates for compat APIs.
grails-events/compat/src/main/groovy/reactor/bus/registry/Subscription.groovy Deprecation metadata updates for compat APIs.
grails-events/compat/src/main/groovy/reactor/bus/registry/Registration.groovy Deprecation metadata updates for compat APIs.
grails-events/compat/src/main/groovy/reactor/bus/EventBus.groovy Deprecation metadata updates for compat APIs.
grails-events/compat/src/main/groovy/reactor/bus/Event.java Deprecation metadata updates for compat APIs.
grails-events/compat/src/main/groovy/reactor/bus/Bus.java Deprecation metadata updates for compat APIs.
grails-events/compat/src/main/groovy/grails/events/Events.groovy Deprecation metadata updates for compat APIs.
grails-events/compat/src/main/groovy/grails/artefact/Service.groovy Deprecation metadata updates for compat APIs.
grails-domain-class/src/main/groovy/org/grails/plugins/domain/support/ConstraintEvaluatorAdapter.java Marks adapter for removal.
grails-domain-class/src/main/groovy/org/grails/plugins/domain/GrailsDomainClassAutoConfiguration.groovy Deprecates bean exposure for adapter.
grails-doc/src/en/ref/Database Mapping/updatable.adoc Renames/updates doc entry from updateable → updatable.
grails-doc/src/en/ref/Database Mapping/insertable.adoc Updates doc references to updatable.
grails-doc/src/en/guide/reference.adoc Updates include target for renamed doc.
grails-doc/src/en/guide/index.adoc Updates guide reference anchor and include for renamed doc.
grails-datastore-core/src/main/groovy/org/grails/datastore/mapping/dirty/checking/DirtyCheckingSupport.groovy Marks legacy overload for removal.
grails-datastore-core/src/main/groovy/org/grails/datastore/mapping/core/AbstractSession.java Updates dirty checking to use non-deprecated API.
grails-datastore-core/src/main/groovy/org/grails/datastore/mapping/config/Entity.groovy Marks legacy datasource constants for removal.
grails-datamapping-validation/src/main/groovy/grails/gorm/validation/Constrained.groovy Adds since metadata to deprecated API.
grails-datamapping-core/src/main/groovy/org/grails/datastore/gorm/query/NamedQueriesBuilder.groovy Deprecates named query builder for removal.
grails-datamapping-core/src/main/groovy/org/grails/datastore/gorm/query/NamedCriteriaProxy.groovy Marks named criteria proxy for removal.
grails-datamapping-core/src/main/groovy/org/grails/datastore/gorm/GormEntity.groovy Marks named-query accessors for removal.
grails-datamapping-core/src/main/groovy/org/grails/datastore/gorm/GormEnhancer.groovy Deprecates named-query helpers for removal.
grails-data-mongodb/core/src/main/groovy/org/grails/datastore/gorm/mongo/api/MongoStaticApi.groovy Marks deprecated API for removal.
grails-data-mongodb/core/src/main/groovy/grails/mongodb/api/MongoInstanceOperations.groovy Marks deprecated interface for removal.
grails-data-mongodb/core/src/main/groovy/grails/mongodb/MongoEntity.groovy Marks deprecated API for removal.
grails-data-hibernate5/core/src/test/groovy/grails/gorm/hibernate/mapping/HibernateMappingBuilderTests.groovy Adds test coverage for updatable mapping alias.
grails-data-hibernate5/core/src/main/groovy/org/grails/orm/hibernate/cfg/PropertyConfig.groovy Keeps backwards-compat deprecations and adds TODO note.
grails-core/src/main/groovy/org/grails/compiler/injection/MixinTransformation.java Adds deprecation metadata for removal.
grails-core/src/main/groovy/org/grails/compiler/injection/ArtefactTypeAstTransformation.java Marks legacy method for removal.
grails-core/src/main/groovy/grails/validation/ConstraintsEvaluator.java Adds deprecation metadata for removal.
grails-core/src/main/groovy/grails/util/MixinTargetAware.groovy Adds deprecation metadata for removal.
grails-core/src/main/groovy/grails/util/Mixin.java Adds deprecation metadata for removal.
grails-core/src/main/groovy/grails/core/GrailsApplication.java Marks legacy constants for removal.
grails-converters/src/main/groovy/grails/web/JSONBuilder.groovy Marks deprecated JSONBuilder for removal.
gradle.properties Adds openTest4jVersion used by new module.
.github/workflows/release.yml Bumps GH release action version.
.github/workflows/release-notes.yml Bumps release-drafter action major version.
.github/workflows/groovy-joint-workflow.yml Adds workflow flag for Geb waiting.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.


@Unroll
void '#beanType beans can load plugin config values'(String beanType, String expectedResponseValue) {
void '#beanType beans can load plugin config values'(String expectedResponseValue) {

Copilot AI Mar 20, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

beanType is referenced in the feature method name and in the where: table, but the method signature no longer declares a beanType parameter. This should be fixed by either restoring the beanType parameter in the method signature (and using it), or removing beanType from the method name and where: block.

Copilot uses AI. Check for mistakes.
'Plugin Groovy Micronaut' || 'Plugin Groovy Micronaut Bean - my.value2: this is value 2 from plugin.yml'
'Plugin Java Micronaut' || 'Plugin Java Micronaut Bean - my.value2: this is value 2 from plugin.yml'
'App Groovy Micronaut' || 'App Groovy Micronaut Bean - my.value2: this is value 2 from plugin.yml'
beanType || expectedResponseValue

Copilot AI Mar 20, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

beanType is referenced in the feature method name and in the where: table, but the method signature no longer declares a beanType parameter. This should be fixed by either restoring the beanType parameter in the method signature (and using it), or removing beanType from the method name and where: block.

Copilot uses AI. Check for mistakes.
throwTagError('Tag ["meta"] missing required attribute ["name"]')
}
return Metadata.current[attrs.name]
return Metadata.current.getOrDefault(attrs.name, null)

Copilot AI Mar 20, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Metadata.current is a grails.util.Metadata instance (not a Map), so getOrDefault(...) is unlikely to exist and can raise a runtime MissingMethodException. Prefer the previous bracket access (Metadata.current[attrs.name]), or call a Metadata API (for example getProperty(...)) that is guaranteed to exist.

Suggested change
return Metadata.current.getOrDefault(attrs.name, null)
return Metadata.current[attrs.name]

Copilot uses AI. Check for mistakes.

then:
def e = thrown(SAXParseException)
e.message.contains('External Entity')

Copilot AI Mar 20, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This assertion is brittle across JDK/vendors/parsers because SAXParseException.message wording varies widely. Consider asserting on a more stable signal (e.g., that parsing fails with SAXParseException, and/or that the resulting document does not contain the injected secret, and/or that the exception references the blocked entity name ext/systemId) rather than matching a specific phrase.

Suggested change
e.message.contains('External Entity')
e.systemId == uri

Copilot uses AI. Check for mistakes.

[[ref-database-mapping-updateable]]
[[ref-database-mapping-updatable]]
==== updateable

Copilot AI Mar 20, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The anchor and include were updated to updatable, but the rendered section title still says updateable. This creates an inconsistency in the docs TOC/search and should be updated to ==== updatable to match the renamed file and anchor.

Suggested change
==== updateable
==== updatable

Copilot uses AI. Check for mistakes.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

4 participants