The GitHub Actions job "CI" on 
grails-core.git/fix/spring7-nested-map-conversion has succeeded.
Run started by GitHub user jdaugherty (triggered by jdaugherty).

Head commit for run:
8aee63808cecbf1e77466ceb4640dfe785b12713 / James Daugherty 
<[email protected]>
Bind nested settings entries the resolver cannot address by path

The Map fallback re-read every nested entry from the property resolver by
dotted path and discarded the value it already held. The resolver exposes
the aggregate Map for a level without always exposing what sits below it,
so a configured value was silently dropped - hibernate.hibernateEventListeners
built an empty bean instead of failing loudly as it did before. Bind the
entry in hand when the resolver has nothing for the path and the value is
already assignable, so declared conversion still runs where it applies.

Also:

- Read the raw value only when the typed lookup found nothing, saving a
  resolver pass per nested scalar.
- Resolve a Class entry from the value in hand and keep an inherited class
  when the configured value names none, matching the top-level handling.
- Store map-backed entries under the normalized String key so they stay
  addressable by String.
- Resolve a flattened descendant key from its path rather than from the
  descendant's value, which belongs to a deeper property.
- Report a setter that rejects a value against the property's own path
  instead of the parent's, with the type that was expected.
- Correct the comments: a type carrying a runtime @Builder annotation is
  built by the recursion above and never reaches this branch.

Covers the Class-typed, map-backed key and resolver-addressing paths with
specs, including the Hibernate settings tree that reproduces the failure.

Report URL: https://github.com/apache/grails-core/actions/runs/35926294956

With regards,
GitHub Actions via GitBox

Reply via email to